VBプログラマ質問スレ(6.0以前) Part47
1 :
デフォルトの名無しさん :
2006/03/03(金) 02:30:12
乙
お疲れまんこ!!
8 :
デフォルトの名無しさん :2006/03/04(土) 01:44:42
あげ
9だったら処女に加えて可愛くて若くて性格よくてキツマンの子と結婚出来る
11 :
デフォルトの名無しさん :2006/03/05(日) 18:03:05
しつもーん^o^/ コマンドボタンを押したように(クリックしたように) アニメーションさせる方法ってありますか?
SendMessageで実際に押してやれば?
>>11 Command1.SetFocus
SendKeys " ", True
14 :
デフォルトの名無しさん :2006/03/06(月) 18:19:04
済みません。教えていただきたいのですが、 XPSP2にVB6のServicePack6を入れたいんですが エラーが出て入れられません。 setupsp6.exeを叩くと 「C:\windows\system32\autoexec.ntファイルシステムは MS-DOS及びMicrosoftWindowsアプリケーションを実行するのに 適していません。アプリケーションを終了するには[閉じる]を 選んでください。」 って出て、「閉じる」と「無視」が有るのですが、 無視を選んでも何も起きません。 WindowのCaptionには「16ビットWindowsサブシステム」と出ています。 原因と対処法を教えて頂けないでしょうか?
17 :
デフォルトの名無しさん :2006/03/06(月) 19:22:02
18 :
17 :2006/03/06(月) 19:23:08
済みません。 sage忘れました・・・
19 :
17 :2006/03/06(月) 20:10:05
>>15 可能性2をやってみたら正常にインストールできました。
有難うございました!
>>20 IDEのバッファオーバーフローなんてどうでもいい
IDEユーザーに悪意があった場合、そのクライアントが無茶苦茶にされてしまう危険性があるだろ。 もはやローカルアプリだからセキュリティは不要なんて言い訳は通用しない。
果たしてパッチは出るのだろうか・・・
dbpとslnなんて触ることあるんだろうか。いや無い。
>>25 そういう文体、何て言うんだっけ?
反語?
そうだね。反語。 古典のテストだと、翻訳時に「いや無い」を付けないと誤答に されやすいんだよね。「俺は反語を知っているぞ」というアピールのために ちゃんと書いておかないと。
29 :
デフォルトの名無しさん :2006/03/09(木) 15:44:27
Timerについて教えてください。 timerのintervalは65000(1分少々)程度ですが、1~120分程度 のtimerをすることはできませんか? ちなみに、do loopで時間みといて、イベント発生させるとCPU負荷 が上がってしまいます。あまり、負荷を掛けない方法をお願いします。
>>29 1 スタート時間を記憶する
2 タイマーをほどよい頻度でON
3 タイマーイベントで記憶していたスタート時間と今の時間を
比べ指定の時間を超えたらガッテム
>>29 最初に現在時間から必要な間隔を足した日時を求めて、
その日時に到達するまでタイマーを一定時間おきに発生させる。
その日時に到達したらタイマーを止め目的の処理を行う。
>>29 Sleep(0) コールすればCPU負荷はないよ。
>>32 それはタイムスライスをOSに返すだけだから、CPU使用率100%というのは変わらないはず。
>>29 まあ基本は
>>30-31 と同じだけど、
1.イベントを起こしたい日時と現在の日時の差を求める。
2.差が65000を超えていたら、65000。それ未満の場合はその時間でIntervalの設定する。
3.イベントハンドラでイベントを起こしたい日時を超えていなければ1に戻る。超えていれば処理実行。
35 :
29 :2006/03/09(木) 23:36:48
>>30-34 さん ありがとうございました。
もう少し、timerが長ければなー
こんな用途はいくらでもあると思うのだが・・・
2分毎と3分毎にガッテムのときはタイマー2個使う? タイマー1個で自分でカウントする?
一個で十分じゃん? 二個で二十分にはならないけどな
39 :
29 :2006/03/10(金) 14:33:22
ちょっと作ってみました。 1秒程度の誤差は気にしないので こんな感じでしょうか? Sub Command1_Click() start = Round(Timer, 0) Timer1.Interval = 1000 End Sub Sub Timer1_Timer() If (Round(Timer, 0) - start) >= Val(Text1.Text) Then '----処理---- Debug.Print "OK" start = Round(Timer, 0) End If End Sub '------------------- Global start As Double
ループ Sleep DoEvents timeGetTime あたりを使えばかなり正確&低負荷なのつれくない? timeGetTimeは計算がミリ秒になるから
Windowsなんて、どうせ一日に3回位リブートするんだし、 そんなに長時間のカウンタなんて無意味な様な。
Public sub SabuRu-chin(byval obj as object) End sub すんません。オブジェクトをサブルーチンに値渡ししたとき 受け取ったオブジェクトがForm1かどうか見分けたいのですが どうすればいいのでしょうか
>>43 if TypeName(obj) = "Form1" then
>>44 普通って何だ?
> 受け取ったオブジェクトがForm1かどうか見分けたいのですが Form1オブジェクトなのか、 Form1クラスなのかによって コードは変わるけどな まあ、オブジェクトと書いてあるからオブジェクトなのだろうが。 あと、TypeNameよりは、えーっとなんだっけ? Is? オブジェクトを直接比較したり、型を直接比較したほうがいいよ。 最近使ってないからわからん。
>>47 VBA.Information.IsObject ?
現在VB6(SP6)環境にてActiveXコントロールを作成しているの ですが、ActiveXのプロジェクト内に標準モジュールを追加して そのモジュール内でコントロールのオブジェクトを指定すること ができません。 とりあえずモジュール内でオブジェクトを生成してやれば行けるかな と思い、モジュール内で Dim hoge As TextBox Set hoge = CreateObject("active.txt1") activeはactiveXコントロール名 txt1はコントロール上のテキストボックス名 とコードを書いても実行すると、 実行時エラー'429'; ActiveXコンポーネントを作成できません。 というエラーがでます。 429についてMSDN等で調べて対処法を試してみたのですが、 解決しませんでした。 何かいい方法ありませんでしょうか?
>>49 「コントロールのオブジェクトを指定する」てのが、何をしたいのか分からん・・・
しかも何故 CreateObject なのか・・・
IActiveDesktop用のTBL 誰か持ってません?
53 :
49 :2006/03/12(日) 22:36:01
説明がわかりにくくてすみません。
コントロールのオブジェクトってのは、作成中の自作ActiveXコントロール上に
配置したテキストボックス、コンボボックス等のコントロールの事です。
そのActiveXコントロール上に配置したコントロールが、ActiveXプロジェクト
内に追加した標準モジュールから「ActiveXコントロール.テキストボックス」
の様に指定ができなかったので、CreateObjectでオブジェクトを生成したら
ActiveXコントロール上のコントロールを操作できるかと思ったのでやって
みたのですが、
>>49 のエラーが出てできませんでした。
>>53 テキストボックスはユーザーコントロール上に貼ったんでしょ?
UserControl1.txt1
じゃね???????????????
>>「ActiveXコントロール.テキストボックス」
テキストボックスを外部公開しないとこの様な記述は出来ない
って言うかテキストボックスをActiveX越しに呼び出す必要あるの?
>>53 あのな。CreateObject で指定するのは「アプリケーション名.クラス名」。少なくとも、テキストボックスを
公開しておかなきゃ無理。
>>53 ぐだぐだ長文なんか書かなくていいから、コピペですぐに
現象が再現する、必要最低最小限のコードを提示しろよ。
57 :
49 :2006/03/12(日) 23:36:06
返信ありがとうございます。 >テキストボックスはユーザーコントロール上に貼ったんでしょ? はいそうです。 >UserControl1.txt1 モジュール上でそう記載すると「変数(UserControl1)が定義されていません」とでます。 >って言うかテキストボックスをActiveX越しに呼び出す必要あるの? ユーザーコントロール内に関数を作っていってもいいのですが、どうせなら 関数の役割ごとの標準モジュールを作成していったほうがいいかなって 思ったので。 その標準モジュールから、作成中のユーザーコントロールに貼り付けたテキストボックスを、 指定したいんです。 >あのな。CreateObject で指定するのは「アプリケーション名.クラス名」。少なくとも、テキストボックスを >公開しておかなきゃ無理。 すみません、プロパティやメソッドの公開の仕方はわかるのですが、コントロールの公開の仕方が よくわかりません、よければ教えていただけないでしょうか?
58 :
49 :2006/03/12(日) 23:46:21
すみません、下記がコードです。 標準モジュール内のコード: Public Function Ftp_Connect() As Boolean Dim nFlag As Long If Not bActiveSession And hOpen <> 0 Then If UserControl1.cmb1.Text = "" Then ←この部分でユーザーコントロールのコンボボックスのText値を指定したい MsgBox "サーバが選択されていません!!" Exit Function End If ・ ・(途中省略) ・ Ftp_Connect = True End Function
>>45 >>if TypeName(obj) = "Form1" then
こんな馬鹿かいるとは
Object型・インタフェースのインスタンス型を調べる時は
If TypeOf obj Is Project1.Form1 Then
だろ普通は...
60 :
49 :2006/03/13(月) 09:59:07
すみません、自己解決しました。 Dim box As ComboBox Set box = CreateObject("プロジェクト名.ユーザーコントロール.コントロール") と指定してやると、 If box.Text = "" Then の様に指定してやることができました。 レス下さった皆さんありがとうございました。
61 :
デフォルトの名無しさん :2006/03/13(月) 12:45:43
MSINETコントロールを使ってFTPアップロードをしているのですが、 JPEGファイルだけがアップできません。 ルーター辺りも疑ってみたのですが、Nextftpだと普通にアップできるし…。 どなたか同じ症状が出た方はいますか?
62 :
61 :2006/03/13(月) 13:10:11
原因はWindowsファイアウォールのせいみたい。 無効にしたら普通にアップロードできた。 けど、何でMSINETでJPEGファイルPUTするときだけ、 駄目になるんだろ?? ともかくVBは関係なさそです。 スレ汚しスマソ。
>>61 Nextftpはパッシブモードで通信してたんじゃないかい?
ニッチテキストボックスで、改行コードがあったら↓と表示させる方法を教えてください
while true KBD(VK_2, CLICK, 2) KBD(VK_4, CLICK, 2) KBD(VK_7, CLICK, 2) wend このようなプログラムを実行しようとしたのですが、 2行目の20文字目。Subプロシージャを呼び出すときカッコは使えません。 というエラーがでます。 どうしたらよいでしょうか
68 :
デフォルトの名無しさん :2006/03/13(月) 21:45:07
VB6SP6を使用しています。フロッピーディスクのフォーマットについて質問があります。 CommonDialogを使用して、フロッピーディスクからファイルを開き、データを取得した後に SHFormatDriveでフロッピーをフォーマットしようと思うのですが フォーマットダイアログの開始ボタンを押すと「他のプログラムで使用している」という旨の メッセージが出てフォーマットできません。 解決方法などありますでしょうか。
>>67 Call KBD(VK_2, CLICK, 2)
>>69 様
ありがとうございます。
しかし次は型が一致しません ’KBD’ とエラーが表示されてしまいました
これはどのように対処したほうがよいでしょうか
よろしくお願いします。
while true Call KBD(VK_2, CLICK, 2) Call KBD(VK_4, CLICK, 2) Call KBD(VK_7, CLICK, 2) wend 行 2 文字 1 コード 800A000D
76 :
pp :2006/03/13(月) 22:56:13
offceのクリップボードのアイテムをクリアする方法は無いのでしょうか? 当方PPTのデータをADOBEのソフトにコピペをするバッチ処理のツールを 作ろうと思っているのですがいつも15~16ページ前後でメモリ不足で終了 してしまいます。どなたか知恵をかしてください。
>>70 閉じてます。
>>71 試してみます。
ありがとうございました。もう少し調べてみます。
>>75 それのどこを読めばいいのかわからんが、
> ・アレはテキストボックスでは無く テキストボックスの様に見える絵
> ってのが結果
アレとか結果って言葉の使い方がおかしいのはいいとして、
そういう実装もあるってだけでしょ?
オーナードローで改行の位置に絵を書くというやり方もあるだろうし。
>>76 Excelとかでマクロ記録してクリップボードをクリアして、
そのVBAを参考にすればいいじゃん。
80 :
pp :2006/03/14(火) 00:19:10
>>79 返答ありがとうございます。しかしながらクリップボードのクリアは、マクロには
書き込まれないみたいなのです…。
>>78 テキストボックスは オーナードロー属性を持たないよ
サブクラス化してもやるんだったら描画捕まえるとかしか(精度低くていいんなら キーが入力された とか スクロールした時ので十分)
HTMLのハイライト表示やった事あるけど重しチラつくし使い物にならなかった
改行程度ならいけると思う
おいおいGetDCの引数は何ですかw
>>80 コピーしてクリアしたら
Selection.Copy
Application.CutCopyMode = False
Selection.Clear
こうなった。
84 :
pp :2006/03/14(火) 00:50:57
>>80 ありがとうございます、もう一度ためしてみます。
85 :
デフォルトの名無しさん :2006/03/14(火) 13:43:33
環境はオラクル10gとVB6です。 テーブルAにdate型のJikanフィールドがあり、2006/01/01 12:12:12というデータが入っているとして、 select * from A where Jikan = '2006/01/01 12:12:12' を実行すると literal does not match format string というエラーが発生してしまいます。 抽出条件に日付・時刻を指定したいのですが、どうすればいいのでしょうか?
>>85 select * from A where Jikan = ?
プレースフォルダにして日付時刻型のパラメータを指定。
または
select * from A where Jikan = TO_DATE('2006/01/01 12:12:12','YYYY/MM/DD HH24:MI:SS')
>>77 おまいの作ったアプリのカレントフォルダがFDDのドライブになってるんでない?
CurDir で適当な場所に変更したらすんなり通るんじゃないかと
VB6.0のアプリケーションってランタイムライブラリが必要ですが コンパイルしたexeを起動したときに 「ランタイムが必要です。」とかメッセージを出して ランタイムを配布しているサイトを開くといったようなことは できないでしょうか? ただランタイムエラーが発生するだけなのを放置するしかないでしょうか?
89 :
デフォルトの名無しさん :2006/03/15(水) 09:25:42
インストーラーを作ってそれを配布しればいいじゃん。 そうじゃなければ、.netへ移行してノータッチデプロイなりクリックワンスなりで実現。
>>88 ActiveXコントロールを作り、ディストリビューションウィザードで
インターネットパッケージを作ってみては?
VBランタイムもMSのサイトから自動的にインストールできるようになるよ。
ただ、インターネットパッケージはActiveXベースのプロジェクトでないと
使えないのが難点だけど。
92 :
88 :2006/03/15(水) 11:57:04
>>89-91 ありがとうございます。
ちょっと考えたのですが
VCなどでVBのランタイムが入っているかどうかのチェックをする
アプリを作って、そこからVBのexeを起動するようにしてはどうかと
思ったのですが、そもそもVBのランタイムが入っているかどうかの
チェックのやりかたがわからないのですが、困ったものです。
setup.exeはVBで作られています
>>92 簡単にチェックするなら、
MSVBVM60.DLL / VB6JP.DLL
辺りの存在を見てみるとか。
95 :
88 :2006/03/15(水) 13:32:09
>>94 ありがとうございます。
exeを秀丸で開いてdllとocxを検索してみたところ
VB6JP.DLL
MSVBVM60.DLL
MSWINSCK.OCX
MSCOMCTL.OCX
が必要みたいでしたので、これらをLoadLibrary()してみれば
よいかもしれません。
97 :
88 :2006/03/15(水) 14:23:12
なんとなくうまくいったような・・・・ でもこれってバージョンとかどうなんでしょうね。 #include "stdafx.h" #include <windows.h> int main(int argc, char* argv[]) { HINSTANCE h; h = LoadLibrary("mswinsck.ocx"); if (h == NULL) { printf("ng!"); } else { printf("ok![%d]\n", h); } getchar(); return 0; }
>>95 そんな寒い方法で調べてないでディストリビューション ウィザード起動して
パッケージを選択、パッケージ形式を依存ファイルにしてDEPファイルを作れ
そのファイルの中身をメモ帳で見れば、何が必要なのかわかるよ
99 :
88 :2006/03/15(水) 14:54:51
>>98 わお!
出ましたよ。リスト。秀丸では見つけられなかったものが
たくさんありました。
100 :
デフォルトの名無しさん :2006/03/15(水) 16:17:07
VB5.0ラーニング使いなんですが GUIありなしに関わらずdllって作れますか?
101 :
デフォルトの名無しさん :2006/03/15(水) 16:24:55
>>100 ActiveXDLLなら作れるが、ネイティブなのはムリポ
104 :
デフォルトの名無しさん :2006/03/15(水) 18:18:15
すいません。先日書き込んだものですが テンキーの 7 4 2 を半永久的に押し続けたいのですが 初心者なもので起動してもエラーばかりです。 どなたか作っていただけませんでしょうか
>>105 「起動してもエラーばかり」って、どんなコードでどんなエラーが出るんだよ。
>>105 「先日書き込んだ」って、アンカー付けろよ。
Option Explicit
Const VK_NUMPAD2 = &H62
Const VK_NUMPAD4 = &H64
Const VK_NUMPAD7 = &H67
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags&, ByVal dwExtraInfo&)
で
Do
Call keybd_event(VK_NUMPAD2, 1, 0&, 0&)
Call keybd_event(VK_NUMPAD4, 1, 0&, 0&)
Call keybd_event(VK_NUMPAD7, 1, 0&, 0&)
DoEvents
Loop
#さて、釣れるかな・・・
#さて、釣れるかな・・・ ひとことよけい
109 :
デフォルトの名無しさん :2006/03/17(金) 09:52:39
VB6でピクチャボックスに表示させた JPGとかPNGの画像を縮小する方法 教えてください~
>>109 一旦 Image コントロールにコピーして Stretch してから戻すとか。
>>107 ばか、それじゃ押してないだろ、押し続けたいって言ってるんだよ。
USBにロボットアームをつないで指で247キーを押さなきゃダメに
決まってるだろ。早く教えてやれ。俺?しらねえよそんなの。
まぁ、誰かが質問に回答しても、その後質問者は 二度と現われないからどうでもいいじゃん。
113 :
http://www.vector.co.jp/soft/win95/util/se072729.html :2006/03/18(土) 19:28:26
64bitに対応したトリップ検索プログラムありますか? TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
114 :
デフォルトの名無しさん :2006/03/18(土) 19:35:06
>>113 その TextSS はVBアプリの上 DLL類を必要とするから ネイティブ対応は簡単ではないよ
>>113 時間帯によって文体が違うのな。今日一日で何回読んだか…超マルチ。嫌われただろうなぁ。
117 :
デフォルトの名無しさん :2006/03/20(月) 00:14:20
実行ファイルのみから、すべてのソースを抽出するようなツールはありませんでしょうか?
119 :
デフォルトの名無しさん :2006/03/20(月) 00:33:28
vb6用の逆コンパイラって無いでしょうか? ググってみてもver4とか古いのしか対応していないやつばかりで 見つかりません。 前任者が仕様書も何も残さず突然出社しなくなって困っています。 ご存じの方がいらしたら教えてください。お願いします
ソースは前任者の家にしかないのか? 不自然な設定だなぁw
121 :
デフォルトの名無しさん :2006/03/20(月) 00:44:17
>>119 常日頃からバックアップを取っておかなかったあなた自身の失策ですよ
>>118 ,120
わからないのなら、わからないと言える素直さを身に着けましょう。
>>121 わからないのなら、わからないと言える素直さを身に着けましょう。
会社のPCにはソース残ってるだろ? まさかそいつの個人の持ち物のPCにしか入ってないなんて馬鹿な事はしてないだろうしな ウイルス問題もあるし、会社の外に持ち出すなんて考えられないよな
>>12 わからないのなら、わからないと言える素直さを身に着けましょう。
128 :
デフォルトの名無しさん :2006/03/20(月) 00:56:29
VB6 用の逆コンパイラはあるけど、いまいちだな。 実際の動きから作り直したほうが早いかも。
>>12 わからないのなら、わからないと言える素直さを身に着けましょう。
>>119 ある訳がない。
そんな人が書いたプログラムなんてろくでもないので、
最初っから設計し直した方が遥かに早くて高品質。
FormなりPictureBoxなりのhDCに描いたデータをjpgとして保存する方法を教えてください
134 :
133 :2006/03/20(月) 16:40:09
カラーは少ないのでgifでもいいです
>>134 VB単体ではめんどくさいのでよそのDLLを使うといい
136 :
133 :2006/03/20(月) 17:57:34
>>135 早速ありが㌧。
よそのDLL使う場合配布等面倒なんだよな。
できれば単独でやりたいけど、いろいろ探したがサンプルはなかなか落ちてないなあ。
GDIPlusとか使ったら簡単みたいだけど、これも環境によっては配布端末に入ってない可能性ありそうだし。
ああ、作んのマンドクセ('A`)
誰か、ソースくれ!
>>135 Dll も Ocx も、その程度の機能のやつなら、
フリーで沢山ありそうだね。
>>136 ここは学校の課題や仕事を、あなたの代わりにやってあげるためのスレではありません
速やかに消えてください
>>136 配布自由のフリーなら、全然面倒じゃない。
>>137 , 139あんがとね。
>>139 既に配布してるアプリの追加機能にするから、配布面倒な事情もあって。
まあ、いろいろとあってさ。
その辺はなんとかできなくもないけど、どっかにソースあったらその方がいいなと思って。。。
>>138 んなこたあわかっとるが、まんどくせえから親切な人をあてにして聞いてるんであって、
おまえが答えたくないなら答えんでもよろし。
俺が消える必要はないだろ。
ってか、fjにしても、2ch他BBSにしても、教えて厨、クレクレ厨に冷たい奴多いな!
答えたくないならスルーしとけばいいのに。
>>140 おまえはホームラン級の馬鹿だな
言葉を選んで質問するだけで波風たたずに答えがかえってくるのに
142 :
デフォルトの名無しさん :2006/03/20(月) 18:59:52
>>140 街中を肩で歩いてる奴に温かい声を掛けてくれるってよっぽどの所だと思うぞ
社会不適合者ってこんな感じなんだろうね。
思考がどうみても在日です。
馬鹿って言うな馬鹿>< 馬鹿なもんは仕方なかろうもん。 波風立たせようとしてるわけじゃなくて、特に技術者関係(PGやソフト開発関連)のBBSとかでは、 『調べたの?』とか『ヘルプ読んだ?』とか、答えも教えてやらないくせに難癖つける奴が多いと思ったの。 そういう奴ってリアルに嫌な奴だと思うぜ? 一昔前なら、大手でもそんな奴多かったし、そういう先輩に嫌味も一杯言われたけど、 正直今時流行んないと思うのね。そういうの。 別に2ch、BBSに正解を求めてないし、教えたい人が教わりたい人に つドゾー tp://www.hogehogeuhauha..... とか言って教えてやりゃいいじゃんか、と思うのだ。 今時の技術者には開発期間が短すぎて時間がないんだから、 知ってる奴は教える、知らない奴はスルー、一々つまらんレスで煽ったり、煽られたりしてる時間なんかないっての。 こんなだからSE、PGがすぐにやめてくんだよ。 楽しく仕事しよーぜ?
無駄に長文かくな馬鹿
成長の無い幼稚な馬鹿に何を言っても無駄
タカアンドトシのコントかとおもった。 「こどもか!」ってつっこみを繰り返すやつ。
みんな余裕がないんだね ┐(´∀`;)┌
>>140 意味不明。
どのみち配布するんだから、何使おうが同じだろが。
>>145 皆がちゃんと親切に正解を教えてくれてるのに、聞く気ないじゃん全然。
>>140 ここはVBプログラミングについて教えを請う場であって
作成依頼をする場所ではありません
ソース下さいは「教えを請う」こととは違います
わがまま放題したいなら、自分のサイトで掲示板を立ててやってください
>>145 すでに回答もらったのに、
「それじゃ、まんどくせ、ソース書いてくれ」
って言ってきてるんだが、後輩がそういってきたら
お前なら、そいつの担当部分を実装してやるのか?
>>140 fj は junet の頃から見てるけど、
お前の様な質問者は昔は皆無だった。
VB6で、Program FilesフォルダやProgram Files\Common Filesフォルダの取得の仕方って どうすればいいのでしょうか? ググってみて、SHGetSpecialFolderPathというAPIには辿り着いたんですが、 少々思っているディレクトリのパスとは違いましてorz このAPIだとユーザ毎の各種特殊フォルダが取得できるみたいですが。 どなたかご教授くださいませ。
>>154 CSIDL_PROGRAM_FILES と CSIDL_COMMON_PROGRAMS や
CSIDL_COMMON_DOCUMENTS じゃだめなわけ?
思ってるディレクトリって何よ
>>154 つEnviron$("CommonProgramFiles")
>>153 > fj は junet の頃から見てるけど、
> お前の様な質問者は昔は皆無だった。
昔は回答者も匿名で罵倒だけするような
モラルのかけらも無い奴じゃなかったからなw
確かにw
159 :
デフォルトの名無しさん :2006/03/21(火) 04:57:43
WinXP-Pro+SP2 で VB6.0+SP6 です。 プロミスキャストモードで、パケットキャプチャしてます。 これを簡易的なFirewallに昇華させたくて相談です。 取得したパケットの中で自分が送信するパケットだけを 遮断させたくて、TCPヘッダを見て自分発だったらその ときのソケットにSetsockopt()で、SO_LINGERをセットを しようとすると、強制終了しちゃいます。 lRet = Setsockopt(s, SOL_SOCKET, SO_LINGER, Linger, Len(Linger)) 3晩ググッて分からなかったので、とりあえずやってみた のですが、いろいろ読んだり試していくうちに、自分でも これはかなり常識的な手段では無いと感じています。。 やはり、かなりおバカな方法でしょうか? プロミスキャストモード以外でパケットを見張る方法が、 他にありましたら、そこからシャットダウンが出来そうな 気もしますが、そんな感じで合ってますでしょうか? また、Setsockopt()するソケットをWSADuplicateSocket()で 複製して、そいつにSO_LINGER,を与えて急いで送出すれば 受信側にRSTが届くのと同じ効果を与えられそうな気がしま すが、これも有り得ない方法でしょうか? VBだけでドライバ云々はスキル的に無理なので何とか こんな感じで遮断を実現したいのですが、何か方法が ありませんでしょうか?ご教授よろしくお願いします!
>>159 そういうOCXを買った方がいいんじゃないの。
VB6でAPIを使わずに、ウィンドウの有無は無視、アクティブ優先で 指定した座標クリックしたいのですが、 何か技法あったらご教授おねがいします。
>>162 「ウィンドウの有無は無視、アクティブ優先」の意味が不明。
>「ウィンドウの有無は無視、アクティブ優先」 最前面のウィンドウをクリックしたいって事だろ VBだけじゃ無理だな
>>165 keybd_event で解決なのにね。
>教えて厨、クレクレ厨に冷たい奴多いな! 冷たくないやつの方が珍しいと思うが。
Excelとかのファイルのプロパティの概要のところにある 作成者を書き換える方法あります?
微妙にスレ違いだとは思うんですが、質問させてください。 VBのソースの日本語部分だけを抜き出して、エクセルにはきだしたいのですが、 これってプログラムくまなきゃ駄目なんでしょうか・・・ エディターとかで出来ないでしょうか?
>>170 返答ありがとうございます。
ただ文字列は不特定なので「日本語」の部分だけを抜き出したいんですよね。
>>172 不特定の場所にある「日本語」という文字列を探せばいいわけだろ?
>>162 俺のエスパー能力で推察するに
Excelとか、ソースが存在しないプログラムを自分のプログラムから
操作したいと見た。
見たところで回答は浮かばないのでドロンします。
176 :
154 :2006/03/22(水) 19:34:20
>>155-156 Environ(4)で取得できました。
でもこれだと
CommonProgramFiles=C:\Program Files\Common Files
って返ってきてしまうんですが・・・
等記号の右辺を切り出して使用することにしました。
でもなぁ・・・
177 :
168 :2006/03/22(水) 23:11:08
>>171 どうもです。
ActiveWorkbook.BuiltinDocumentProperties("Author").Value = "hoge"
でできました。
>>177 ちゃんと結果のコードを書き込むなんて素晴らしい人だ。
それでこそ、このスレのログがDBとなるね。
>>176 >Environ(4)で取得できました。
俺の環境だと CLIENTNAME=Console が返ってくる
つか、なんでインデックスで取ろうとしてるんだよw
インデックスは普通列挙するときに使うもんだろ
もうちょっと、しっかりMSDN読んでこいよ
>>179 >>156 にちゃんと Environ$("CommonProgramFiles") と
書いてあるのに、わざわざ 4 にしたのは何故か・・・
いつどこで誰が作ったか知らないプログラムを見させられてるんですが PictureBoxの中にコントロールをまとめて、フレームっぽく使ってるのは、 なんか意味があるんでそか
お前が理解できるかどうかはともかく、作った人にとっては意味があるからそうしてるんじゃないの? コードまで見ないとコンテナにFrameではなくPictureBoxを使った理由までは明確に断言できないけどね。
>>182 コード見ると、まとめて可視/不可視、まとめて座標移動くらいしかしてないですね
フレームでもいいけど、たまたまこの人は絵箱が好きだった、ってだけのことなのかな
184 :
88 :2006/03/23(木) 11:54:40
スクロールバーを出したかったからだよ
186 :
176 :2006/03/23(木) 15:24:04
188 :
186 :2006/03/24(金) 11:59:09
>>187 だから、
>>176 の左辺って書いてるじゃん。
CommonProgramFiles=C:\Program Files\Common Files
の左辺つったら CommonProgramFiles だろ?
190 :
デフォルトの名無しさん :2006/03/24(金) 15:28:47
NUMLOCK CAPSLOCKの状態を判別するにはどうしたら…? (?_?)
192 :
190 :2006/03/24(金) 17:43:53
それはわかります 条件式として組み込みたいので ブール型などで返すようなコードが 知りたいのです
>>192 コードが書かれているリンクもおしえてるのに、なにが不満なんですか?
194 :
190 :2006/03/24(金) 17:47:45
スイマセン リンクとんだら分かりました ありがとでした m(_ _)m
>>181 多分XPのビジュアルスタイル対策だと思う
Frameの中にコントロールを置くとXP(ビジュアルスタイル適用)で真っ黒表示になるVB6のランタイムバグがある
誰だあげた奴はまったく・・
>>181 単なる装飾目的のこともあるよ。
ボタンとかをやたらPictureBoxの中に置いてみたりするやついるじゃん。
たまに。いない?いるんだってそれが。
:呼んだ?
いや、呼んじゃいないけどさ。
質問です 最近の高機能なマウスに、ブラウザのページ移動の機能なんかがついたボタンがありますが フォーム上で、こういう特殊なマウスのボタンが押されたことを知る方法を教えてください
202 :
デフォルトの名無しさん :2006/03/27(月) 04:24:35
ADOでデータベースアプリ作っているんですが以下の連続したIf文でどちらもスルーします。 変数 "rs!日付" はデータベースのレコードセットの日付/時刻型のフィールドです。 両方にelseをつけるとどちらもelseを通ります。なぜだか教えてください。 If rs!日付 <> Null Then MsgBox ("Not Null") End If If rs!日付 = Null Then MsgBox ("Null") End If
>>202 Nullとの比較はIsNull()を使うんだよ
204 :
デフォルトの名無しさん :2006/03/27(月) 13:23:49
>>203 ありがとうございました。
IsNull() 調べてみました。
>重要 IsNull 関数を使用すると、式に Null 値が含まれているかどうかを
>調べることができます。If Var = Null や If Var <> Null のように他の
>状況では真 (True) と評価される式でも、偽 (False) になります。
>これは、Null 値を含む式はすべて式自体が Null 値となり、偽 (False)
>と評価されるためです。
なんでこんな仕様なんでしょう?
Nullは値じゃないから。
Nullは値
VBから参照設定でExcelを指定して、セルへの値の貼り付け、 レイアウトなどを全てVBから行って、印刷する場合なんですが 複数台のパソコンにインストールする場合、Excelのバージョンを 全て同じにしないと動かないもんですか?
209 :
デフォルトの名無しさん :2006/03/27(月) 15:00:12
参照設定したらアーリーバインドだから、動かないんじゃないの? CreateObjectなら互換性ある範囲で動くと思うけど。 まあ、どっちにしても普通は避ける。
>>208 逆だよ。
「VBから参照設定でExcelを指定して、セルへの値の貼り付け、
レイアウトなどを全てVBから行って、印刷する」必要があるから、
インストールする全てのPCを同じ設定にして下さい、と頼む。
211 :
208 :2006/03/27(月) 17:06:10
なるほどー 調べてみたら、レイトバインドでやる、というのが常道みたいですね ありがとうございました
212 :
デフォルトの名無しさん :2006/03/27(月) 17:23:05
>>211 いや、だからなるべくその状態にしないのが常道だよ。
同一コンパイルモジュールでの、複数Office対応は基本的に考えない。
極端な話、Officeのバージョン毎にEXEを分ける。
少なくとも、同一EXEであっても、全てのOfficeバージョンに対するテストは必須となる。
なので、当然見積もり時点でそれを考慮すべきであって・・・。
つまりExcelはExcel単体で使えと。
将来のバージョンでの動作は保証しませんの一言でいいやん。
215 :
デフォルトの名無しさん :2006/03/28(火) 01:18:46
現在接続されている自分のグローバルIPアドレスを取得する方法を教えてください
>>215 外部のサーバに接続してIPをかえしてもらうのが一番正確かと
ルータ使っていると自分のグローバルIPは存在しないしな。 UPnP対応のルータだったら、ルータに聞けば答えてくれるらしいが。
>>216 外部のサーバーに対してどのように働きかければIPアドレスを返してくれるのですか?
その具体的な方法を教えてください
>>217 ルーターに聞くとは、具体的にどういう意味ですか?
またルーターではなく、モデム接続の場合は取得可能な方法がありますか?
>>218 そのまえにどんな状況でIP知りたいんだ?闇雲にやったって遠回りだ
オレはこれから寝るから誰かあと頼む
220 :
215 :2006/03/28(火) 04:07:44
>>219 ありがとうございます
ルーターやモデム、無線LANなど、一般的なインターネット接続環境を対象にしています
ただ全ての環境で通用する方法でなくてもよいです
特定の環境でしか通用しない方法でもいいので、具体的なやり方を教えてください
>>220 Dim Tmp$
With Inet1
.URL = "
http://taruo.net/e/ "
Tmp$ = .OpenURL
End With
Dim chBuf() As String
chBuf = Split(Tmp$, vbLf)
Dim i%
For i% = 0 To UBound(chBuf)
If InStr(chBuf(i%), "host=") <> 0 Then
Text1.Text = chBuf(i%)
Exit For
End If
Next i%
222 :
デフォルトの名無しさん :2006/03/28(火) 11:55:01
>220 特定の環境でさえ…と言うなら、まず特定の環境を定義してくれ。 じゃないと、決め打ちでいんじゃね?とか、答えちゃうぞ。
224 :
215 :2006/03/28(火) 13:41:44
>>222 わかりました
YahooのADSL回線でレンタルのモデムを使用して接続した環境での取得方法を教えてください
最初の質問する段階から、環境によって取得方法が変わることすら知らなかったので
これだけでいいのか私には分かりませんので、まだ不確定な要素があれば指摘してください
225 :
デフォルトの名無しさん :2006/03/28(火) 14:07:55
そもそも何でグローバルIPが必要なの?って事の方が重要な気が すなおにグローバルIPを取得するべき物じゃないの?
>>224 何のためにそういうことをしたいのかがわからないから推測で書くけど、
外部からインターネット経由で自宅のPCにつなぎたいの?
確認くんとかDDNSで解決しないかな?
227 :
215 :2006/03/28(火) 14:41:21
>>225 >すなおにグローバルIPを取得するべき物じゃないの?
その素直な取得方法を教えてください
>>226 せっかくの提案ですが、代わりの方法は考えていません
私が知りたいのはあくまでも
>>224 条件下でのグローバルIPアドレスの取得方法です
YahooのADSL回線でレンタルのモデムを使用して接続した環境でも 無線と有線では違うし。
230 :
215 :2006/03/28(火) 15:14:28
>>229 あ、定期リロードして一番下にスクロールしてたので、ちょうど隠れて見落としてました
>>221 ありがとうございます、参考にさせていただきます
ただ、その方法だと、特定サイトに依存した処理になってしまいますよね
出来れば、もう少し確実に取得できる方法を教えていただけると助かるのですが
それで215は何でグローバルIPが必要なのか? 理由によってはグローバルIPが判らなくても別の方法があるかもしれないだろうに。
確実にやりたきゃ複数のサーバにIP返すCGIを仕込んでおいて 一つが失敗したら切り替えてトライするしかない
>>230 だ・か・ら。
他の人が書いてる様に、あぁいう方法しかない、って事が理解出来ないのか?
特定の環境下で可能な方法を聞いておきながら、特定のサイトに依存しては駄目
とは、我侭な事夥しい。
あのサイトと同じ事をするサーバを、お前自身で立ち上げてそれを使え。
即答されてるのにどうしてこんなにぐずってるんだ?
235 :
215 :2006/03/28(火) 15:46:04
>>323 なるほど、ということは DiCE などのIPを取得する機能を持つアプリは
作者が自前のCGIを用意して、そこへアクセスして実現しているということですか?
>>233 >他の人が書いてる様に、あぁいう方法しかない、って事が理解出来ないのか?
すみません、どのレスのことでしょうか?
ああいう方法とは、どういう方法ですか?
>特定の環境下で可能な方法を聞いておきながら
違います、環境は一般的な接続環境ならなんでもいいんです
ただ、環境によって取得方法が変わるとのことなので
全ての環境で取得できる方法でなくても、どれか1つでいいので知りたいんです
そのために環境を指定しろとのことなので、言われるままに指定しただけです
もうあとは自分で調べられるだろ。
>>235 「全ての環境で取得できる方法」を、何人もの人が書いてくれてる件。
もしこんな知識の人間がP2Pソフト作ったら日本のプロバイダは壊滅するぞ
それもそうか
241 :
デフォルトの名無しさん :2006/03/28(火) 18:05:14
>>227 素直にグローバルIPを取得ってISPに申請をしてグローバルIPを割り当ててもらうのが筋だと思うが
そんな事よりもISPの利用規約ちゃんとよんどけよYahooがそうかどうかは知らないが
さすがにルータで複数接続禁止の所は減ったみたいだが、ダイアルアップや一般のPPPOE接続だと
P2Pソフトに拠るファイル共有や、サーバソフトを実行して外部にサービスを提供する事を禁止している所が多いぞ
粘着さんがごちゃごちゃ言ってやり方言わないのは、このようにどうしても分からない場合があるから。 知ってるなら、分かる場合、分からない場合、その理由とか説明すればいいのにね。 で、ルータの場合グローバルIPがわからなかったりと不便なのもあって、 比較的最近(結構たつか?)UPnPというのが出来た。UPnPに対応しているルータだと、 ルータに割り当てられているグローバルIPを問い合わせることが出来る。 ルータに対して、GetExternalIPAddress命令を送ればいいんだけど、やったこと無いんで詳しくは省略。 どうやらルータ内蔵のhttpサーバーに、GetExternalIPAddress命令を含めたXMLデータをPOSTすればいいみたいね。 普通にInetコントロールでhttpサーバーにアクセスする方法でいけそう。 XPなら、HNetCfg.NATUPnP コントロールでできるかもしれない。 あとは詳しい人よろしく。 といいたいけどこのスレには詳しい人はいないでしょうね。
>>242 まともに答えてるだろ
中途半端はお前だ馬鹿
>>242 イニTさんのサイトじゃん。懐かしいな。まだランエボ乗ってるのかな。
で、ルータなしの場合なんかを質問してる訳ないでしょ。
直結ならどうにでもなるんだし。
で、ルータに問い合わせればいい事なんて誰でも分かってるっての。(
>>217 とか)
質問者がルータの型番とかも未だに秘密にするし、だからこそ、皆は
「サーバにIP返すCGIを仕込んでおいて」って書いてるのに。
'-----------------------------------------------------------
' WAN側(インターネット側)のIPアドレスをゲットするスクリプト
'-----------------------------------------------------------
'ルーターのIPアドレスを指定する
igdIp = "192.168.0.1"
'-----------------------------------------------------------
Set dom = CreateObject("MSXML2.DOMDocument")
dom.loadXML "<?xml version=""1.0""?><SOAP-ENV:Envelope →続く→
xmlns:SOAP-ENV=""
http://schemas.xmlsoap.org/soap/envelope/ "" →続く→
SOAP-ENV:encodingStyle=""
http://schemas.xmlsoap.org/soap/encoding/ ""> →続く→
<SOAP-ENV:Body> <m:GetExternalIPAddress →続く→
xmlns:m=""urn:schemas-upnp-org:service:WANPPPConnection:1"">→続く→
</m:GetExternalIPAddress> </SOAP-ENV:Body>→続く→
</SOAP-ENV:Envelope>"
Set http = CreateObject("Msxml2.XMLHTTP")
http.open "POST","
http:// " & igdIp & "/upnp/service/WANPPPConnection",False
http.setRequestHeader "SOAPAction","urn:schemas-upnp-org:service:WANPPPConnection:1#GetExternalIPAddress"
http.send dom.xml
MsgBox http.responseXML.text
Set dom = Nothing
Set http = Nothing
POST /upnp/service/WANPPPConnection HTTP/1.1
SoapAction: urn:schemas-upnp-org:service:WANPPPConnection:1#GetExternalIPAddress
Host: 192.168.10.1
Content-Length: などのヘッダを適当に
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/ " SOAP-ENV:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/ ">
<SOAP-ENV:Body>
<m:GetExternalIPAddress xmlns:m="urn:schemas-upnp-org:service:WANPPPConnection:1"></m:GetExternalIPAddress>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
HTTP/1.0 200 OK
~HTTPのヘッダが色々~
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/ " SOAP-ENV:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/ ">
<SOAP-ENV:Body>
<m:GetExternalIPAddressResponse xmlns:m="urn:schemas-upnp-org:service:WANPPPConnection:1">
<NewExternalIPAddress>61.203.161.165</NewExternalIPAddress>
</m:GetExternalIPAddressResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
249 :
デフォルトの名無しさん :2006/03/28(火) 23:08:52
すいませんちょこっと教えてください。VB5からVB6に アップグレードしようとおもうのですが、再コンパイル程度で のせかえれそうですか?あまり特殊なAPIは使ってないんですが 1000本を越えるソースがあるんでちょっと不安がありまして
>>245 > で、ルータなしの場合なんかを質問してる訳ないでしょ。
おまえぜんぜんよんでねーのな。
>>224 > YahooのADSL回線でレンタルのモデムを使用して接続した環境での取得方法を教えてください
これでルータありだと思う奴はよっぽどひねくれている。
>>250 そんなに詳しく読んでるなら教えてやれよ。w
そしてその後、
>>215 の姿をこのスレで見た者は居ない・・・
255 :
215 :2006/03/29(水) 01:22:48
今、終電で帰宅したのでレス遅れてすみません
>>241 忠告は分かりましたが、技術的な問題を聞いているに過ぎません
包丁の作り方を聞いたからといって、殺人の心配をされても困ります
>>242 >>243 >>246-248 有用な情報をありがとうございます
これだけ、とっかかりのキーワードが頂けましたので
細部のやり方についてはなんとか自分でも調べられそうです
なんとなく取得できる状況というのが見えてきたので考えをまとめたいのですが
まず、モデムに関しては
>>242 のgethostbynameで分かる
ルーターの場合はUPnPという機能を持っているならXMLデータで問い合わせ
それらの方法でも無理ならば、IPアドレスを返すCGIにアクセスする
このような認識で概ね合ってるでしょうか?
>>245 取得に必要な条件で足りない要素があれば指摘してくださいとお願いしたはずです
ルーターの型番について1度も触れられていませんので秘密にしたと言われるのは心外です
また、私が元々知りたいことは
>>220 にあるとおりです
結局取得してどーするんだろう?
258 :
215 :2006/03/29(水) 01:57:14
>>256 わかりました
ではその無線に限定したやり方を教えてくださいますか?
260 :
デフォルトの名無しさん :2006/03/29(水) 02:01:35
>>258 お前も、そういう奴にいちいちレスすんな
粘着君は回答持ってないし、質問者をおちょくってるだけだからな
はいはいゆとり教育ゆとり教育 自分で考えることをやめた若者増産
こりゃ何とも香ばしいな。 つか最近こんなのばっかなの? いや、俺は嬉しい。 アホが増えれば増える程儲かるからなwwwwwwwww
で、結局何に使うんだ? 掲示板利用してこれに答えないのは失礼だろう。
ipconfig作った人に、なんでIP表示するの?といっているようなもんだなw なんでそんなに用途を聞きたがる? それを聞いていったいどうしたいんだ?
>>264 わからないの?用途に最善の方法を提示しようとしてるだけなのに。
>>255 > まず、モデムに関しては
>>242 のgethostbynameで分かる
> ルーターの場合はUPnPという機能を持っているならXMLデータで問い合わせ
> それらの方法でも無理ならば、IPアドレスを返すCGIにアクセスする
> このような認識で概ね合ってるでしょうか?
基本的にそれであってる。
最後のはCGIじゃなくても、インターネット越しに通信できる
相手がいれば、その他の方法でも出来る。
あと、DDNSについても調べておくといいかもしんない。
無料で自分だけのアドレスを持つことも出来る。
それを利用すれば、グローバルIPを知る必要も無いかもしれないし、
また、DDNSサーバーを利用して自分のグローバルIPを知ることも可能。
>>265 ごめん。俺エスパーだから先に答えちゃったw
もう何も言うこと無いでしょ?
> 無料で自分だけのアドレスを持つことも出来る。 アドレスっつーか、名前ね。 hoge.foo.jp みたいな。
なんでそこまでつっかかるんだ?
仕様をなかなか出さない客や上司などと姿がだぶるのであろう 情報出せばすぐ終わるのにいくらつついても出さないからな
答えがわかっている場合は答えを言ったほうが早い。
273 :
215 :2006/03/29(水) 02:53:33
>>266 >基本的にそれであってる。
よかった!ありがとうございます
>最後のはCGIじゃなくても、インターネット越しに通信できる
>相手がいれば、その他の方法でも出来る。
これは要するに、あらかじめ決められた通信手段で応答するソフトを
待機させておくことが前提ということですよね?
そうすると、問い合わせる相手のグローバルIPが必要で・・・鶏と卵?
あ、その場合に DDNS があれば可能ということですかね、なるほど。
とりあえず大体理解出来たと思いますので、あとは実際に関数などを調べながら作ってみようと思います
ありがとうございました
塩。
>>271 仕様は220とか224にあるだろ、しっかり読めよ
お前が知りたがってるのは単なる好奇心だろ
>>275 おまえがよく読め…足りてなかったからこんなにダラダラ話が伸びたんだろ
>>277 よく読めよ
ああ、足りてないのはお前の頭か
情けない
久し振りにスレが伸びてると思ったらこれか。w まぁ今時、逆ギレする質問者なんて珍しくもないが。 しかしコミュニケーション能力ゼロだな。
>>249 VB5とVB6はソースコードレベルでは互換性があるけど、
変わったコントロールを使っているなら注意が必要。
VB6のコントロールに置き換えるか、VB5からコントロールを持ってくる必要がある。
>>280 VMWareとか使って、VB5のままで運用するのは駄目なのかな。
282 :
デフォルトの名無しさん :2006/03/29(水) 14:12:42
既に動いてるものをいまさら5から6に上げる必要があるかどうかだよな
>>279 どうみても逆(?)切れしてるのは、回答者(回答してないけど)のほうです。
ありがとうございました。
286 :
デフォルトの名無しさん :2006/03/30(木) 00:13:27
XMLHTTPで都度、PROXYを指定することはできますか?
XMLHTTPでPROXYの指定は出来んよ UrlMkSetSessionOption使えばアプリが使用するPROXYが設定できるから XMLHTTPにも反映されるような… ぁま 試してないから分からんけどね
そういやUrlMkSetSessionOptionだっけ? ユーザーエージェントを変えるの。 これ使ってもIDEでは変更されてないことがある。 でもEXEにして実行するとちゃんと設定されている。 でもIDEでも変更されているときがある・・・? IEコンポーネント読み込むタイミングとか IDEで動かした場合実行ファイルがIDEのプロセスに なっちゃうとかが関係してそう。 まあともかく、EXEにすればちゃんと動くので問題ないけど 混乱しないように情報提供です。
>>279 粘着回答者のほうがキモイ
>>288 ちょっw中途半端に間違ってて余計に混乱するw
IDEでもEXEでもきちんと変更される
ただし、そのAPIで変更できるのはプロセス起動中に1度きり
要するにIDEだとVB6.EXEを再起動しなければ変化しなくなるってわけ
> 粘着回答者のほうがキモイ 同意。答えを知らないのに、偉そうに講釈たれるやつとか。
さぁどんどん質問してくれ。 分かる事は何でも回答しちゃうよ。
chr(&hF2)を指定すると、返ってくるのは、 "SOH"(chr(1)) chrb(&hF2)を指定すると、返ってくるのは、"o"(chr(6f)) になってしまうんです。 なんで?
さぁどんどん質問してくれ。 分かる事は何でも回答しちゃうよ。
>>293 何がやりたいのか分からん。
「返ってくる」って何?
それらを何かの関数に渡してその戻り値が?
別に &HF2 のまま扱えばいいじゃん。
>>283 その1000本をさらに.netに乗せかえる予定だったりしてな。
Windows2000とVB6SP6の環境で、マイクロソフトのホイールマウスでスクロールしないのですが 対応させる方法はないでしょうか?
どこでもホイール
>>297 主語が抜けておりまする!
解答不能にござる!
300 :
デフォルトの名無しさん :2006/03/32(土) 23:32:49
TextBoxに64KB以上の文字列を代入したいのですが、お知恵をお貸し下さい。 EM_LIMITTEXTメッセージで入力制限を拡張する方法はやってみたのですが、 Text1.text = 64KB以上の文字列 として代入された場合は、64KBまでしか受け付けないんです。 代入と入力では制限の仕方が違うんでしょうね。 そこでクリップボード経由でWM_PASTEメッセージで貼り付けたんですが、 これはうまくいきました。 しかしクリップボードを汚さないスマートな方法があればいいのですが。。 何かないでしょうか。
301 :
300 :2006/03/32(土) 23:46:38
補足ですが、RichEditは処理が遅いので使いたくないんです。 TextBoxに64KB以上の文字列をクリップボードなしで読み込ませる方法をお願いします。
304 :
300 :2006/04/02(日) 00:05:29
>>302 EM_SETHANDLE辺りをゴニョゴニョしたらなんか出来そうな気もするんですが。。
いまVBのサンプルソースとか探してます。
でもVB, TextBox, 64KBでググったら、どこのサイトでも
64KB制限を突破する方法はないからRichEdit使えって
断定的に書いてあるんですよね。
クリップボード経由ならできたのに・・・。
>>304 そもそも、TextBox はそんな用途に使うコントロールじゃないし。
クリップボードで出来るならそうすればいいだけ。
>>305 TextBoxの用途を勝手にお前の妄想で限定すんなよ
妄想で限定してるんじゃなくてMSが64kbって限定してるんだろw
308 :
300 :2006/04/02(日) 01:15:00
自己レスです。 クリップボード経由ではない方法を見つけました。 WM_SETTEXTメッセージで何の苦労もなくセットできました。 これは意外と知られていないことかもしれません。
>>308 9x系だとそれでも64KBまでだからな・・・最近は気にしないでいいのかも。
すいません、他スレできいていたのですが、答えられる人がいなかったようなので このスレで聞かせてください。 struct KEYBOARDDATA { enum { BREAK = 1, E0 = 2, E1 = 4, TERMSRV_SET_LED = 8 }; enum { KEYBOARD_OVERRUN_MAKE_CODE = 0xFF }; USHORT UnitId; USHORT MakeCode; USHORT Flags; USHORT Reserved; ULONG ExtraInformation; }; 上記のようなC言語の構造体をいまVBに移植しているのですが、 まったくもってわけがわかりません! まず第一にUSHORTって調べてみたら符号なし16bit整数とか書いてるし VBには符号なし16bit整数の宣言なんてないはずだし・・・ VBに上記の構造体を移植するのは不可能なんでしょうか?
>>309 主語がないから、IDE画面のスクロールとは限らんぞ
なんらかのVBのコントロールの話かもしれん
>>308 VB標準のクリップボードでは駄目で、APIならいい、ってのが
サッパリ理解出来ん。
で、クリップボードの内部で同じ処理してるだけだと思うが。
>>311 別に、ビット幅が16ビット、ってだけなんだから、Integer でいいじゃん。
それを符号なしで扱う方法なんて、何とでもなるし。
>>313 クリップボードはユーザが意図して使うものであって、
プログラム処理の都合で勝手に内容を書き換えていいものではない。
それに、クリップボードのバッファを経由する分、無駄な処理になる。
複数のファイルを読み込むには、どの様なコードを書けばよいですか? たとえばテキストファイルとかなのですが、書店の本などを見ても 1つのファイルを読み込む内容しか書いてないです。(私が見つけられないだけかも..) すみませんが、どなたかご教授願います。
>>315 だったら何故VBにクリップボードオブジェクトが実装されてるんだよ。
既にデータがあったら、退避して戻せばいいだけ。
API使ったって何処かのバッファは経由するだろうが。
枝葉末節に囚われて、正しく動作するコードが書けない奴の典型だな。
>>316 一つのファイルを読み込む処理を繰り返せばいいのでは。
クリップボードはプログラムが勝手に使うな、っていうのは自分も思うが。 後でペーストするつもりでコピーしておいたものが、プログラムを実行したら 消えてた、って言うとイヤだし。オマエどこのEXCELだよ!とか まぁ個人の好き嫌いっていうわけでもないけど、推奨はされないと思う>プログラムでクリップボード書き換え それはそれとして、WM_SETTEXTでセットする方法は意外と知られていない というよりは、普通にみんな知ってるけど64KB以上使おうという人があまり いないからなのではないか、とか思った。
>>317 >既にデータがあったら、退避して戻せばいいだけ。
底の浅い考えだな~
クリップボードの履歴を取るソフトに影響する点は考えもつかない?
>>317 レス有難うございます。
ですが本に載っているやり方は、決まったファイル名を
読み込む事は書いてあるのですが、フォルダ内にある色々なファイル名の
ファイルを取得するような事は、書いてない(見つけられない)のです。
このような事をする際は、どの様なコードを書けばよいのでしょうか?
>>320 要するに君が分からないのは、複数のファイルを読み込む方法じゃなくて
特定のフォルダ内にあるファイル一覧を取得する方法を知りたいってことかい?
>>318 だね。
しかし、テキストボックスに64k以上の文字列って、
一体どんなのなんだろう・・・
>>321 複数のファイルを読み込みたいのです。
例えば、種類別に在庫数などを書いてあるファイル(テキストなど)を
特定のフォルダにあるもの全て読み込んで、在庫数を計算するなど
の事をやりたいのですが...
>>323 やりたいことは分かってるって
その処理のうち分からない部分はどこなの?
一連の処理を全部作って欲しいってことじゃないっしょ?
>>320 ネットで、DirやFileSystemObjectを使う方法がすぐ見つかる。
326 :
324 :2006/04/02(日) 13:20:28
いいや、疑問点を聞き出すの、めんどくさいから適当に書いとく ファイルの開き方とか読み込み方はデータ形式次第なんで自分で調べてくれ Dim strFileName As String strFileName = Dir("C:\Windows\*") While Len(strFileName) > 0 strFileNameファイルを開く If ファイルを開けたかどうか Then strFileNameファイルの内容を読み込む 読み込んだデータを集計する strFileNameファイルを閉じる End If strFileName = Dir '次のファイル名を取得 Wend
TextBoxは64K以上は扱っちゃダメ ペーストで動いているのは多分 2000かXPだから ちなみにTextBoxにメッセージを送る時はテキスト64Kまでしか扱えないようになっている なぜならメモリーが64K以上扱えても Win32 APIが64Kまでを基準に設計されてるから(古いWindowsの名残) (2000・XPでは仕様が変わって64K以上が扱えるようになってるけど推奨されていない) だから64K以上のテキストを扱うときにはリッチテキストか市販されてるテキストコンポーネントを使うしかない あとクリップボードのデータを無闇に入れ替えたりすると クリップボードを監視するソフトが誤作動を起こすよ クリップボードはWindowsでデータを共有する為にある事を忘れるな バッファに使うなんてとんでもない低脳バガ
>>323 「一つのファイルを読み込む」方法が分かってんなら、
後はファイル名を変更するだけでしょうが。
329 :
デフォルトの名無しさん :2006/04/02(日) 16:21:06
EXCELでVBAを勉強してるんですがこれってC言語に似てますね ひょっとしたらVBってのも仕様がVBAに似てるんですか?
>>329 >EXCELでVBAを勉強してるんですがこれってC言語に似てますね
CとVBが似てるとは、結構変わった感覚の持ち主だね
このレベルで似てると思えるならJavaもDelphiもJavaScriptなんかも同じようなもんだなw
>ひょっとしたらVBってのも仕様がVBAに似てるんですか?
ものすごく砕けた言い方すると、VBAはVBの体験版
似てるというレベルじゃなくて、ほとんどそっくり
でもどうせ勉強するならC、C++にしといた方がいいぞ
これを身に付けておけば他の言語の習得は容易になるからね
VBやってると簡単すぎてバカになる、、、気がする
関数は違うけど書き方が似てるはほとんどの奴で一緒か・・・
>>329 クラスモジュール使ったこと無い事は分かったw
標準モジュールマンセーなのも分かったw
ってうか釣りレスだろ
333 :
デフォルトの名無しさん :2006/04/02(日) 17:17:54
そうですね、まだ「勉強中」ですから。
けどVBプログラマ
>>332 がなぜ嫌われているのか分かった気がします。
まあ、気にするな 初心者に対して見下すような態度を取る奴ほど実際は大した技術を持ってない
すいません、昔どこかでWriteFileのAPIを使用してCDドライブの開閉を行っているプログラムをDLしていたのですが、 もうページがなくなったのか探してもみつかりません。 どなたかWriteFileをつかってのCDドライブの開閉方法をおしえていただけませんでしょうか?
337 :
デフォルトの名無しさん :2006/04/03(月) 13:56:53
Excel2000からVBAを使ってます。 ExcelのCell内に書かれた内容に変更があった場合のイベントの 検知方法を教えて欲しいです。 WorkSheet単位で内容の変更があった場合のイベントは 取得できるのですが、Cell単位で内容の変更があった場合の 内容の変更は検知できるのでしょうか?
>>337 WorksheetのChangeイベント拾って、
そのTargetが目的のセルかどうかの判定をプロシージャ内で行う。
339 :
デフォルトの名無しさん :2006/04/03(月) 23:19:27
はじめまして。VB6.0を勉強して3日目の超初心者です。 データ型に数値を格納する際、オーバーフローというエラーが出てしまいます。 デバックしてみると、変数に「5.011456E+09」が格納されています。 これは指数表記で、5011456000のことでしょうか?
>>339 いやそんな事より、そのエラーをどうにかしたいとは思わないのか?w
342 :
デフォルトの名無しさん :2006/04/04(火) 08:27:05
>>339 それより今からVB6勉強してもしょうがなえだろ。
343 :
デフォルトの名無しさん :2006/04/04(火) 10:15:35
ExcelでVBA使ってるんだけど このスレでいいですか IMEでローマ字か英数かの状態を判別と設定をしたいんだけど API使わないとダメかな APIなんて手を着けたこともないので どうしたらいいのか…(^_^;)
344 :
デフォルトの名無しさん :2006/04/04(火) 10:19:43
345 :
デフォルトの名無しさん :2006/04/04(火) 10:22:25
質問 VB6でWake On Lan(マジックパケット)を使いたいが 送信するデータ構造が不明 AMDとかみてみたけど情報なさす・・・ 出来ればサンプルとか、何でもいいので情報ほしいっす。 環境 WinXP-SP2 VB6 SP6
>>343 その程度のサンプルなら、WEB検索すれば幾らでもあるよ。
>>348 VB6で作るから関係あるかな・・と思っただけっす
>>350 そうそう、ソフトは結構見かけるのに
その仕様が見あたらなかったんですが・・・
なるほど、紹介してくれたページに
サンプルもみたいなので参考にやってみるっす
おっと書き忘れ
>>350 情報ありがとです(´▽`)
スレ汚し
>>346 そこのスレ、VBAの質問どころか丸投げすら許容してるし回答率もいいけど
VBAに関してはブックやシートなど直接エクセルに関わらない部分のVBA操作は
スレ違いってことになってるから、ブックやシートの操作以外の質問を誘導しても
結局向こうでスレ違い指摘されて戻ってくるだけだよ。
354 :
デフォルトの名無しさん :2006/04/04(火) 19:52:41
VBって、オブジェクト指向とは言わないのですか?
あの~今から独学でプログラミングを始めようとしているのですが、どのプログラミング言語がもっとも初心者向きですかね? プログラミングを始めるならVB6.0かJavaが一番良いと聞いたのもでお聞きしました。 僕はプログラムに関しての知識はゼロです。
>>354 まぁあの3つの条件を満たしてないからね。
>>357 そうですか。
ありがとうございました!
さっそく勉強して頑張ります!
それとVB6.0を覚えたあとVBNETに移行することも簡単ですよね?
>>358 いいえ
VB6とVB.NETはまったく別の言語です
英語と中国語くらいの差があります。
>>359 そうなんですか・・・
では、VB6.0とVB.NETのどちらから始めればいいのでしょうか?
VB6.0はもう手に入らないと聞いたのですが・・・
>>360 手に入りますよ?誰がそんな事を言ったんですか?
362 :
デフォルトの名無しさん :2006/04/04(火) 20:37:18
>>361 えっ?そうなんですか?
それって無料で手に入ります?
>誰がそんな事を言ったんですか?
忘れましたが、どこかのサイトでそう書かれているのを見ました。
実は兄から誘われているんですよ・・・・手伝ってくれって。
でも困ったことに僕は中卒なんですよね・・・
しかもまったく知らない世界で小中と数学も一番苦手だったんですよね・・・
それで、本当はC#を覚えて兄の会社のHPをC#で2人で作成してソフトウエアの受注をしたいとかなんとか言ってました。
でも、独学だと厳しいです・・・何がなんだかさっぱりなのが正直なところ。
そこで一番簡単なプログラミング言語から勉強して、基礎知識を付けてからのほうがいいかなって思いまして。
中卒とか関係ないから。俺は高卒だし。 C# はそんなに難しい言語じゃないぞ。兄貴にサンプルプログラムをもらって、それを 改造するところからはじめてみ。 今なら、Express Edition が無料で手に入るし。
>>362 ヒント:カプセル化、継承、ポリモーフィズム
>>365 なんかすっげぇーやる気になってきました!
その言葉一生忘れませんよ!ありがとう!
俺の人生のターニングポイントになったって感じがする。
マジで感謝しています!ありがとうございました!
いや、せっかくやる気になったところで悪いけど もし職業訓練みたいなノリで将来それを仕事にするつもりで始めようとか 思ってるのなら止めておいた方がいいよ。 数学苦手でプログラマになろうなんて、身長150のガリガリ君が関取めざすようなもんだ。 貴重な人生無駄にしたいなら止めないけど。 まあ趣味のつもりなら好きにすればいいけど、 100%途中で投げることになるよ。
オレは数学苦手だが、プログラマやってるぞ? 数式が必要ならぐぐれば大抵みつかるし、得意な奴がほかにいるし 何の問題も無い
俺も数学苦手だ。自慢じゃないが、数I で挫折した。 でも、何の問題もなくプログラマから SE になれてる。 一部のアルゴリズムばりばり、3Dモデリングばりばり、みたいなプログラミングを 除いて、そうそう数学能力なんていらん罠。
プログラマやSEに一番重要/必要なのは、コミュニケーション能力。
>>354 コンポーネント指向だからオブジェクト指向て解釈ででいいんでね?
C#なんか憶えてもあんまいいことないぞ
VB6.0覚えるよりは未来がある
だったらVB.NET憶えたほうがよくね?
だったらJavaにすりゃええがな
機械語を覚えるのが一番。
オブジェクト指向で1番大事な事は 『1つのクラスから複数のインスタンスが生成できる事』だと思う カプセル化も継承も大事だけど コレだけは絶対忘れないで欲しい っていうか慣れてくると忘れがち VBは機能不足にしろオブジェクト指向であるとは言えるよ オブジェクト指向の学習はJavaが一番良いね .NET(C#もVBも)は 初心のうちはツール(VisualStudio・フレームワーク含む)覚えるのに精一杯になって オブジェクト指向の学習にまで手が届かなくなるよ
>>378 それポインタ本の前橋もそういってるけど違うと思うよ。
それはオブジェクト指向の特徴的な(他には見られない)部分ではあっても
最重要な部分ではない。
最大の恩恵は、それがヒトの思考パターンによりマッチするって点でしょう。
ヒトにとっては「A君の算数のテストの点数」って考えるほうが、「算数のテストの点数の
配列の中のx番目のデータ」って考えるより易しい。
ついでにA君に関するデータと、それを処理する関数を「同じところ」に
書ける様にした方が両者の関係がはっきりする。
要はそれだけのことでしょ。
オブジェクト指向の一番の問題点は、概念を理解/習得する事が
非常に困難、って事だと思う。
理解/習得すれば、
>>379 「ヒトの思考パターンによりマッチする」
ので、設計/開発がやり易いのかもしれないが・・・
>>380 VB6ならまずはForm1のインスタンスとかScreenオブジェクトとかで
感覚をつかむ練習をして、じゃあクラスモジュールで似たような
コーディングをしてみましょう、みたいな進み方をするといいと思われ。
Screen.Widthのことを
「『画面幅取得関数』じゃなくて『画面は幅を持ってる』んだよ」と説明するみたいな。
ちょっと亀レスですが、VB6を起動するとクリップボードの文字列が 消されるよね・・・
> VB6を起動するとクリップボードの文字列が > 消されるよね・・・ いいえ
>>382 アドインのツールバーアイコン画像をクリップボード経由で読み込んでるからだね
アドインをことごとく無効にすれば解消されるかもしれんけど、
俺はクリップボード履歴取ってるからウザいけど許容範囲なんで放置
>>383 頭悪そうなレスだなw
>>384 へぇ~、そうなんだ、と思ってやってみたら、
別に消されなかった。
>>385 どっか他のがロックしてたんじゃないの?
387 :
デフォルトの名無しさん :2006/04/05(水) 23:10:11
VB6.0で質問なんですが、VBでエクセルを操作して、改ページしたいんですが、 xlSheet.HPageBreaks.Add xlSheet.Range("H30")やxlSheet.VPageBreaks.Add xlSheet.Range("H30")で改ページします。 でもエクセルを見てみると確かに太線で改ページ出来てるんですが、破線の自動改ページの線が残ったままになっていて このまま印刷すると自動改ページの線の範囲が優先されてしまいます。 この自動改ページの線も同じ範囲にしてやりたいんですが方法がわかりません。 どうすればいいですか?
俺の環境はVBのエディタでコピーした内容に限って消えるな 他のからコピーされたクリップボードデータは消えない 数年前から気になっていたが そういう理由があったのか
389 :
デフォルトの名無しさん :2006/04/06(木) 00:14:03
VB6.0で何故か編集のツールバー(ブックマークとかコメントのボタン)を出しておいても、 次VBを起動させた時にはまた無くなってるだが、何でだろ? ちなみに他のPCのVBは出しておけばずっと表示されたままになってんだけど。 あとエディッタのスクロールがマウスのホイールで何故か出来ない。 VB以外のエディッタじゃちゃんとスクロールするのに。ほんとわけわからん…
>>388 (
>>382 )VBを起動する時「VBのエディタでコピー
した内容に限って消える」ってどういう意味??
>>387 エクセル上で出来るなら、それをマクロ記録するとか。
>>389 スクロールに関しては、単にVBが
WM_MOUSEWHEEL に対応してないだけでは。
393 :
デフォルトの名無しさん :2006/04/06(木) 01:11:47
WorkSheet_Calculateプロシージャ内で Application.Caller.Addressを参照しようとすると 「実行時エラー424 オブジェクトが必要です」 というエラーが出ます。これはどういうことでしょうか? Addressはどうして参照できないのでしょうか? 環境はExcell2000+VBAです
VBSでmasgbox "tset",1,"sample" とかで表示した時「OK」「キャンセル」どっちが選択されたのかはどうすれば判断できますか?
自己解決しました
397 :
デフォルトの名無しさん :2006/04/06(木) 09:48:48
Errをトラップした際の ”オートメーションエラー”ってざっくり言って何のエラーなの?
OLE オートメーションでエラー。
>>398 対処方法はありますでしょうか・・・?orz
質問になってないのに何を解答しろと?
あんたは
>>397 と
>>399 の書き込みを客観的に見て、自分の状況が伝わってると思えるのか?
>>396 方法1をやってみたけど、スクロールしない・・・_| ̄|○
>>399 OLE オートメーションでエラーが
発生しない様にコードを書く。
403 :
デフォルトの名無しさん :2006/04/06(木) 11:59:38
VB6でEUCコードのファイルを扱うことになったのですが、 イミディエイトウィンドウで表示しようとしても化けててみえません。 回避方法ご存じないですか?
405 :
sage :2006/04/06(木) 12:36:22
>>401 どこでもホイール
あと、ロジクールのマウスドライバを入れてもOK。
407 :
デフォルトの名無しさん :2006/04/06(木) 14:32:13
スプレッドシートのアクティブセルのフォーカスについて質問させて頂きます。 環境:VB6.0 Windows2000 SPREAD:Ver.7.0j スプレッドシートのを3行を1行として扱うような感じでアクティブセルのフォーカスを結合させる方法を探しています。 ヘルプでいろいろ探したのですがそのようなプロパティは見当たりませんでした。 恐れ入りますが、ご存知の方にお答え頂けると幸いです。
>>406 ㌧!
どこでもホイールでスクロール出来ました。
これは便利だ・・・
>>407 それ、グレープシティの製品?
ならそっちで聞いた方がいいかも。
>>407 派生して自作・・・って.netじゃなかったね。
とことんイベントに書き込むしかないんじゃないの?
if aaa<>vbnullstring then とか書いてるのを見るんだけど""とどう違うんですか?
VB上では vbNullString と "" は同じ扱いなる(実際は違うけどVBのコンパイラが同値として判断する仕様)けど Win32APIに渡す時は vbNullString は文字列としてのヌルポインタ(0アドレス)で "" は長さ0の文字列となる
なんか間違ってる気がしますがw
半端な知識は身を滅ぼす・・・。しかもAPI絡みの大事なポインタ渡しの局面で。
質問です。(環境 Windows2000sp4, VB6.0) サーバー側にフォームをもつIISアプリケーションをつくりたいのですがうまくいきません。ご教授願います。 今の構成 [IISアプリ(ActiveX.DLL)] → [ブリッジソフト <データ受け渡し用>(ActiveX.EXE)] ← [サーバー側のモニタソフト] モニタソフトを複数起動してブリッジソフトのデータは共有できるのですがIISアプリからは共有できません。 CreateObjectすると違うプロセスで起動しているようです。 コードです。------------ Dim objA As Actcom.clsBridge Set objA = CreateObject("Actcom.clsBridge") objA.ShowForm ブリッジソフトのフォームを表示 Set objA = Nothing ----------------------
>>418 ActiveX.Exe なんて、マトモには動かないよ・・・
全く普及する事もなく、とっくに消えた技術だし・・・
ExcelでのVBAも、このスレで質問しておkですか? Excelスレのテンプレ読んだら「Excelの操作に関係ない部分はスレ違い」 とあったので…
421 :
420 :2006/04/07(金) 11:16:21
【1 OSの種類 .】 WindowsXP HomeEdition 【2 Excelのバージョン 】 Excel2003 【3 検索キーワード 】 日本語かどうか判定 【4 レベル 】 初級(ポインタとか構造体とかサッパリ) 【5 目的 】 名字と名前を入力させ、セルに出力する <現状> 試験的に名字を判定しています。現在の状況は、 半角数字、半角英字、一部の半角記号 全角数字、全角英字、一部の全角記号 が判定できています。 構文は超原始的です。てか、キレイに書けないorz コードは次で↓
423 :
420 :2006/04/07(金) 11:34:13
∧||∧ ( ⌒ ヽ 改行多すぎで貼れませんでした… ∪ ノ U U
H = Len(NM) For L = 1 To H If Mid(NM, L, 1) Like "[0-9]" Then MsgBox "数字は入力できません" GoTo A ElseIf Mid(NM, L, 1) Like "[0-9]" Then MsgBox "数字は入力できません" GoTo A ElseIf Mid(NM, L, 1) Like "[a-z]" Then MsgBox "英字は入力できません" GoTo A ・ ・ ・ ElseIf Mid(NM, L, 1) Like "[ ]" Then MsgBox "スペースは入力できません" GoTo A ElseIf Mid(NM, L, 1) Like "[ ]" Then MsgBox "スペースは入力できません" GoTo A End If Next L
>>424 かんたんコース :InStr関数を使う
発展コース :正規表現を使う
>>413 ああスマンそれであってるねw
俺の勘違いだわ。
最近ほとんどVB使ってないもんでつい申し訳ない。
427 :
デフォルトの名無しさん :2006/04/07(金) 12:49:00
ガントチャートでスケジュール表を作りたいのですが市販のガントチャートのように
表のヘッダ部分に月日を表示、そして各アイテム事に日程期間のガントチャートを描画する
フリーウェアでいえば
http://www.gansuke.com/にある ”がんすけ”のようなものを作りたいのです
がいい考えが受かびません。
市販のコントロールとしてはSpread2.5J、ChartBuilder5.0Jの開発ライセンスを持っているので
最初はできると思い作業を進めていったのですが・・・
どなたかいい知恵があればご教授お願いします。
>>425 ありがとうございます
早速、修行します
430 :
420 :2006/04/07(金) 14:27:36
"←ダブルだけすり抜けてしまうぅぅ。あと一歩のところで… 無念!(><)
433 :
420 :2006/04/07(金) 15:30:44
>>424 If NM Like "*[0-9]*" Then
>>422 「日本語かどうか判定」が、いわゆる「全角」のアルファベットとかも弾くのなら
If (Text1.Text = StrConv(Text1.Text, vbLowerCase) And _
(Text1.Text = StrConv(Text1.Text, vbUpperCase))) Then
MsgBox "日本語です"
Else
MsgBox "日本語じゃないってばっちゃが言ってた"
End If
とか。
436 :
420 :2006/04/07(金) 21:02:29
437 :
427 :2006/04/08(土) 08:28:49
>>429 >
>>427 > 何聞きたいのかはっきりしろよ。
まず、日程のためのカレンダー表の作り方がわからないのです。
横軸を月日、縦軸を各プロジェクトのアイテム項目としたいのです。
EXCELなら簡単にできますがVBではどうやっていいものかわかりません。
438 :
デフォルトの名無しさん :2006/04/08(土) 09:22:04
PictureBoxでautoredraw = true にした時に使用するバックバッファのサイズって変更できますか? 扱う画像がバックバッファに収まりきれずにAutoredrawエラーが発生します。 すいませんが、どなたかご教授願います。
>>437 エクセル使えばいいじゃん。
つーか、VBは、その手のソフトを作るツールじゃないよ。
カレンダーを実装したいなら、そういうコントロールを
買って貼り付ける。
>>438 無理。
>>438 つーかバッファのサイズを変更って発想が理解不能。
必要なバッファのサイズは当然描画領域の面積によって自動的に決まっちゃうんじゃないの?
脳味噌腐ってないか?w
何らかの理由で[ピクチャーボックスのサイズ] ≠[描画領域のサイズ] ってことなら
描画領域だけAutoredraw = Trueにした別のピクチャーボックス使えばいいんじゃないの。
>>438 画像を真面目に扱いたいなら、「LEAD TOOLS」とか使った方がいいよ。
444 :
デフォルトの名無しさん :2006/04/08(土) 14:09:38
>>439-443 御回答有難う御座います。
>つーかバッファのサイズを変更って発想が理解不能。
>必要なバッファのサイズは当然描画領域の面積によって自動的に決まっちゃうんじゃないの?
と言う事はメインメモリを増やせば改善されるということですか?
>438 名前:デフォルトの名無しさん :2006/04/08(土) 09:22:04 >PictureBoxでautoredraw = true >にした時に使用するバックバッファのサイズって変更できますか? >扱う画像がバックバッファに収まりきれずにAutoredrawエラーが発生します。 > >すいませんが、どなたかご教授願います。 ×使用するバックバッファのサイズ ○使用するバックバッファサイズの上限
>>444 メインメモリを増やしても無駄。
リソースの問題だから。
え?w
>>444 実現したい処理内容を明確にしないと、ゴチャゴチャどうでもいいレスは付くが
問題の解決方法は得られないよ。
描画に関しては「すべからくこのようにすればいい」なんていう
銀の弾丸は存在しないからね。
449 :
何かを作りたい人 :2006/04/08(土) 21:13:52
わけあってVisual Basic Vr.4.0を使っているのですが コマンドをクリックするとプロジェクトを終了する方法は知っているのですが Private Sub Command1_Click() If Text1.Text = "Hello." Then Unload Me If Text1.Text = "" Then Text1.Text = "Hello." End Sub とコマンドのところに打ち込んで 開始のボタンを押すと hello.は表示されるんですが もう一回コマンドをクリックすると終了されたように見えて実行中になっているのですが なんでですか?
>>449 'ココで Unload される
If Text1.Text = "Hello." Then Unload Me
'Unload されているのに Text1.Text = "" を比較しようとしているので
'FormはText1を見る為に再ロードされた
If Text1.Text = "" Then Text1.Text = "Hello."
でOK?
下のIfをElseIfにすればいいんでない?
Unload Meの次にExit Subを入れるとか Select Caseにするとか、とにかくUnload後にText1を見に行かなきゃ いいわけですね。
Command1_Clickでは常にUnload Meして、QueryUnloadで Text1.Textが"Hello."じゃなかったらCancel=Trueとか。 ここまで書くとよけいなお世話か。
430→432→433の流れがおもしろい。
454 :
437 :2006/04/09(日) 06:53:31
>>439 >
>>437 > エクセル使えばいいじゃん。
> つーか、VBは、その手のソフトを作るツールじゃないよ。
> カレンダーを実装したいなら、そういうコントロールを
> 買って貼り付ける。
そういうコントロールが市販されているメーカーがあればば知りたいのです。
グレープシティ社しか私は知らないので・・・
455 :
何かを作りたい人 :2006/04/09(日) 07:59:17
デフォルトの名無しさん ありがとうございました いいものが作れそうです
Unload Me は、最初ちょっと躓く所だね。
457 :
438 :2006/04/09(日) 10:30:09
Win2000で開発してNT3.5で実行するとリソース不足に陥るのは 開発OSと実行OSのデスクトップ・アプリケーション・ヒープサイズの 違いが問題となっている事が多いのでしょうか? NT系であれば上記ヒープサイズは普通3Mbyte確保されているらしいですが、 どうもNT3.5だけ512kbyteに設定されているみたいです・・・・・・
458 :
438 :2006/04/09(日) 10:36:30
レジストリ変更によりデスクトップアプリケーションヒープサイズの 上限を変更できるようですが如何せん、上記ヒープは全てのプロセスに マッピングされるようなので下手にサイズ変更するのは危険らしいです。 共用で使用しているPCならなおさらですね・・・・・・・ 結局、扱う画像のサイズを落とすしかないのか・・・・
459 :
438 :2006/04/09(日) 10:42:47
オブジェクトのライフサイクルを最短にして リソース使用率を低下させるという策もあるようですが、 確実に解決できる策ではないですね・・・・・・・
>>457 運用環境と全く同じ環境で開発&テストするのは、常識以前の話なんだが。
それに、2000でセットアップを作成してNT4にインストールなんかしたら、
NT4の環境が破壊される。
461 :
438 :2006/04/09(日) 11:08:31
Pictureboxに描画するサイズ=ある物体の実寸のサイズ値 にして、Scale関係のプロパティで拡大縮小表示をしたいのですが 実寸の数値が大きすぎてAutoRedrawエラーが発生してしまっています。 変更したい倍率にしてからPictureBoxに描画すれば良いのですが、 現状、データを整数値で管理している上、整数値でPictureBoxに 描画を行っている為、誤差が酷くなってしまうのです。
462 :
438 :2006/04/09(日) 11:15:47
物体のサイズ=整数値を前提としてその他の処理も構築してある為、 整数値で描画をする処理は変更をしたくない状態です。
>>461 まあ幼稚なガキのレスは無視するよろし。
しかし、君のレスにも問題あるだろ。
461で君が言っていることが正しいとすれば、(俺は正しくないと思うんだけど)
それってAutoRedrawと関係ないように聞こえるけど。
MSDNによると、VBのグラフィックメソッドの座標の引数は単精度、
つまりSingle型となっている。
実寸の数値が大きすぎて、というけど、Single型で足りない実寸って
どんな巨大なもの表現するつもりよ?
太陽の直径をmmで表現したってお釣りがくるはずなんだけど。
まず起こっている問題をもっと正確に分析すべきじゃないの?
JAVAとVBはオブジェクト指向だと聞いたのですが オブジェクト指向の考え方を両方とも似た文法で書くのですか 違うとしたらどこが違いますか
>>466 オブジェクト指向は言語でやるものではない。
考え方や作り方であって書き方ではないのだよ。
標準の Directory List Box で、隠し属性の付いた ディレクトリを表示する方法を教えて下さい。
>>466 どのくらい一致していれば似たことになるのかわからないが、
違うとしたら似たところ以外が違う。
ってこんなふうに、あいまいな質問を皮肉っぽく馬鹿にしたレスを付けるから
スレが荒れるんだよな。
>>469 FileListBox なら、Archive, System, Hidden, ReadOnly があるのにね。
472 :
デフォルトの名無しさん :2006/04/10(月) 15:53:24
vb6.0とORCLEを使用しています。 ORACLEにINSERT文で時間を挿入したいのですが、どうもうまくいきません。 例えば、テーブルAにdate1(DATE型)があるとして、 INSERT INTO A (date1) values(SYSDATE) はうまくいくのですが、 自分で好きな時間を挿入する場合はどうすればいいのでしょうか? INSERT INTO A (to_char(date1,'YYYY/MM/DD HH24:MI:SS') values('2006/04/10 15:51:30') は、だめでした。
>>472 DB版いけ~というところだが、一応答えておこう。
INSERT INTO A (date1) values(to_date('2006/04/10 15:51:30','YYYY/MM/DD HH24:MI:SS'))
474 :
デフォルトの名無しさん :2006/04/10(月) 16:10:12
>>473 472です。
できました。
どうもありがとうございました。
475 :
466 :2006/04/11(火) 19:52:46
上の方で機能不足とあるのですが深刻な機能不足ですか。じゃばやしぃぷらぷらを進める人がいるのはそういう事ですか
OO万能みたいな奴のほうが痛い。
それをOOP理解してない君が言うのはもっと痛々しいんじゃないか?w ていうかOOP万能なんていう奴は聞いたこともないけどね。
>>478 2chにうようよいますが、万能と発言はしなくても一連の発言からそうとれる阿呆が。
どんな手法使おうが、結局は、 設計する人が優秀かどうか、だね。
481 :
407 :2006/04/12(水) 18:29:28
>>409 グレープシティの製品です。
ここ以外に質問できるところをご存知でしたら教えて頂きたいです。
スプレッドのスレは見つけたのですが人がいませんし
ほかのサイトで質問してもあまり返信がありません。
>>410 すみませんが派生して自作の意味がよくわかりません。
>>481 ここ以外って、グレープシティの製品なんだから、
グレープシティに聞けばいいじゃん。
メイルサポートやってなかったっけ?
484 :
デフォルトの名無しさん :2006/04/12(水) 19:08:23
VB6.0を使用しています。 画面をハードコピーしたいのですが、 PrintFormだと画面上に表示されたものしか印刷できません。 スクロールバーの付いたテキストボックスなどのように、 画面上に表示しきれない内容をすべて印刷できる方法はありますか?
>>485 あるのですね。
それでは、貴方はそのやり方を説明できますか?
アルナイ厨は無視するよろしアルヨ
>>484 まあそれにしても、484はもう少し実現したいことを具体的に書かなきゃだめだよ。
テキストボックスなどのように、って何だよ。
テキストボックスの内容(要するにテキストだけど)を印刷したいのかい?
それならサンプルを見つけるのに苦労しないはずだと思うが。
>>49 それをどうやって証明するのですか?
実際にやり方を説明しなければ証明できないと思いますが、
では証明(やり方を説明)してみてください。
>>489 ん? 印刷したいのは、
> スクロールバーの付いたテキストボックスなどのように、
> 画面上に表示しきれない内容を
だろ?
「など」と書いてあることからテキストボックス以外も含まれるとわかると思うが?
質問しといて何突っかかってんだよ。。頭悪いのかな。
>>485 みたいにイカレタ奴ばかりじゃなくて、
真面目に回答しようと思ってる奴だって少しはいるのに。
別に煽りでも何でもなくて、文字列を印刷する方法が分からないし、
サンプルも探せない、って本気で言ってるのならプログラミングなんて
やらない方がいいよ。見込みないから。
わからないのは、文字列の印刷じゃなくて、 スクロールバーのついたテキストボックスなどの 画面に表示しきれない内容だろう。 だれが文字列を印刷する方法がわからないといっているんだ?
>>491 君も馬鹿だね。
じゃあスクロールバー付きの物を含むコントロールが複数存在するような
画面のハードコピーなんてどうやって実現するんだよ。
技術的な問題じゃないよ。
レイアウトはどう決めるの?
紙の上ではスクロールバーの機能は実現できないんだぞw 分かってていってるのかな。
497 :
484 :2006/04/12(水) 20:12:27
484です。 私の質問の仕方が悪かったのか、ずいぶん荒れてしまったようです。 どうもスミマセンでした。 スクロールの付いたテキストボックスはフォーム上に1つだけです。 フォーム全体の印刷ができなくても、テキストボックスの内容だけ印刷できればいいです。 (本当はスプレッドシートを使用しているのですが、テキストボックスで印刷できれば後は自分で考えます。)
>>497 だったら、それこそ「文字列の印刷」を調べればいいだけじゃん?
それとも「テキストボックスの中に文字列が書いてある画像」を
印刷したいなら、画像(ビットマップ)を印刷する方法になるかな。
>>497 「テキストボックスの内容」なんて普通の文字列なんだから、
画像としてじゃなく、普通に印刷すればいいじゃん。
500 :
484 :2006/04/12(水) 20:33:11
>>498 >>499 484です。
スミマセン、また説明不足でした。
文字列を印刷したいのではなく、
テキストボックスをスクロールバーのEnabledプロパティがFalseになるまで
伸ばしてテキストボックス全体をハードコピーしたいのです。
(実際にはスプレッドシート全体をハードコピーしたい。)
>>500 「スクロールバーのEnabledプロパティがFalseになるまで」の意味が不明だが、
文字列長が画面よりも長かったらどうすんの?
相変わらず仕様が分からん。
>>500 >>テキストボックスをスクロールバーのEnabledプロパティがFalseになるまで伸ばして
テキストボックスに全て文字が見えるようにHeight・Widthを調整してから
テキストボックス全体をキャプりたいって言う事か
テキストボックスに表示されている文字の高さ・幅が分からなくて
テキストボックスを調整できず途方にくれているのか?
あ、アイコンのプロパティは(なし)になってます
>>503 Form の Icon プロパティじゃなくて?
>>504 フォームを追加した場合、初期のデフォルトでは「(なし)」にはなってない筈。
ああ・・・・見つかりました Iconプロパティで デフォルトでは(アイコン)となってるところをデリートすると(なし)になって、 アイコンが変わってしまうんですね もとのアイコンにはどうやって戻したら・・・
>>507 *.Frm をエディタで変更すればいい。
なしにしたら
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 9492
ClientLeft = 1344
ClientTop = 1380
ClientWidth = 5628
LinkTopic = "Form1"
ScaleHeight = 9492
ScaleWidth = 5628
End
って感じになってるので、
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 9492
ClientLeft = 1344
ClientTop = 1380
ClientWidth = 5628
Icon = "Form1.frx":0000 ← 追加
LinkTopic = "Form1"
ScaleHeight = 9492
ScaleWidth = 5628
End
にする。
>>508 ありがとう!直りました
ただ、逆でしたが・・・
アイコンが(なし)のものに、
Icon = "Form1.frx":0000
があったので、この行を削除したら
標準に戻りました
511 :
デフォルトの名無しさん :2006/04/13(木) 13:41:56
今 ネット使えない状況で ぐぐれないので 質問させてください Altキー押しながら"I"を押す コードって どうしたらいいですか?
512 :
デフォルトの名無しさん :2006/04/13(木) 14:28:48
期限:4月18日。 二分探索の実行過程・実行ステップ数を調べるプログラムを作りたい。
テキストp.52~p.54に載っている順序配列のプログラム(orderedArray.java)を参考
に、ひな形プログラム中の次の各メソッドを完成させよ。完成すると、二分探索の様
子を表示しながら探索を実行してくれるようになる。
1-1:配列の内容を表示するメソッドを完成させよ。
・課題2
1-2:配列にランダムな値を大小順に代入して初期化するメソッドを完成させよ。
・課題3[記入内容非公開]
1-3:二分探索を実行するメソッドを完成させよ。
・課題4
1-4:mainメソッドを完成させ、ソート過程を表示しながら選択ソートを実行するよう
にせよ。
・課題5
1-5:作成したプログラムが正しく選択ソートを実行していることが分かる
実行結果を示し、正しく動作していることを説明せよ。
・課題6
1-6:考察・感想・デバッグ履歴を述べよ。
ひな形プログラムは以下↓のWebページに掲載してあります。
http://edu.kankyo-u.ac.jp/InfSys/class2006/Programming3/20060410/BinarySearch.java 余裕のある人は、配列の大きさによって二分探索にかかるステップ数の平均が
どのように変化するか、調べてみよ。
どうしても分からないので、よろしくお願いします。
鳥取環境大学か? これは酷いなちょっとメールしておくか
以下のコードはテキストファイルCSVからSQL文でデータを取得する関数ですが、 なにかマズイ部分ってありますか? Public Function QueryToTextFile(dirPath As String, sql As String) As Variant On Error GoTo On_Error_Connection Dim connection As ADODB.connection Set connection = New ADODB.connection connection.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=" & dirPath connection.Open On Error GoTo On_Error_Record_Set Dim recSet As ADODB.Recordset Set recSet = New ADODB.Recordset recSet.ActiveConnection = connection recSet.Open sql, , adOpenDynamic, adLockReadOnly If recSet.EOF = False Then QueryToTextFile = recSet.GetRows() End If recSet.Close On_Error_Record_Set: Set recSet = Nothing connection.Close On_Error_Connection: Set connection = Nothing End Function
なにこの○投げw
>>511 SendKeys "%i", True
recSet.Open sql, , adOpenDynamic, adLockReadOnly の行でエラーになったり、ならなかったりと不安定で、 原因が謎なので、どこかおかしな記述でもあるのかなと思って。
>>518 取り敢えずは、 Connection オブジェクトがあるんだから
Dim connection As ADODB.connection
↑変数名に使うのはやめるとか。
>>518 まったく同じデータ&環境でエラーになったり、ならなかったりするの?
「どういうとき」に「どういうエラー」になって、
正常なときと「どう違う」のかを調べてから出直したら?
それってあんたしか調べようがないんだからさw
>>519 とりあえず動作に関しては、それはまったく意味が無い。
VB6でJPEG画像のEXIF情報を取得したいのですがやったことありかたいますか? .NETだと扱えるClassがあるみたいなんですがVB6だとどうなんでしょうか・・・ 外部DLL併用でもよいので知恵をかしてくださいませ。
524 :
デフォルトの名無しさん :2006/04/14(金) 10:25:05
リストボックスの各項目にチェックボックスを付けたいのですが、そういうプロパティが見つかりません。 いわゆる"CheckedListBox"が別にあるのでしょうか?
マズイ部分がわかりました。サンクスでした。
>>524 List1のプロパティ
Style
0=標準
1=チェックボックス
>>524 ヒント:ListBox の Style プロパティ
質問しといて結果の内容報告なしか。
532 :
デフォルトの名無しさん :2006/04/14(金) 11:32:27
ListBoxについて追加で質問です。 DataGridのようにDataSourceにrecordsetを設定してその内容を表示したいと思います。 しかし、単純にList1.DataSource = recordsetとしても表示は更新されませんでした。 レコードセットから必要な情報を取り出して、それぞれAddItemしないといけないのでしょうか。
533 :
532 :2006/04/14(金) 13:35:27
こんな感じでお茶を濁しました。 rs.MoveFirst Do Until rs.EOF Me.List1.AddItem (rs.Fields(0) & " " & rs.Fields(1) & "...") rs.MoveNext Loop
>>532 Microsoft Data Bound List Controls 6.0 (SP6)
Microsoft DataList Controls 6.0 (SP3) (OLEDB)
とか使った方がいいかも。
>>534 レスありがとうございます。
一応試してみたのですが、その二つはチェックボックスを表示させる事ができないようです。
>>524 と
>>532 をスマートな形で満たせるのはListBoxしかないのでしょうか。
TxtBoxで~~~~~~~って入力されているのをクリックすると(別にTxtBoxじゃなくてもよいが) outlookのメール送信ページが起動されて自動的に~~~~~~~の部分をあて先に入力できるようにしたいんですが どうすればいいですかね?調べたんですがsmtpとかの送り方とかそういう難しいのしかみつからなかったんで あて先自動出力だけでいいんですが。 2chの名前欄クリックでsageとかがあて先に入力なるような感じにしたいのです。 winXpPro VB6.0SP6
>>536 文字中のクリックかな?
HTMLにしてWEBのコントロールで表示すれば?
>>536 ヒント:
ShellExecute(Me.hwnd,"open","mailto:hoge@hoge.co.jp", vbNullChar,vbNullChar,SW_SHOWNORMAL)
>537-539 教えて頂いたのを元に検索してみたら無事成功しました どうもありがとうございます。助かりました
522です。 >523 このようなサイトがあるのですね。 今日は仕事でこの時間の帰宅なので明日以降内容を見てためしてみます。 ありがとうございました。
ttp://sansu.org/にある問題を解くプログラムを書きました 。
Private Sub Command1_Click()
Dim X
For X = 1 To 100000 Step 1
If (X + 1) Mod 2 = 0 Then
If (X + 2) Mod 3 = 0 Then
If (X + 6) Mod 5 = 0 Then
If (X + 30) Mod 11 = 0 Then
If (X + 330) Mod 41 = 0 Then
MsgBox ("答えは「" & X & "」です!")
Exit Sub
End If
End If
End If
End If
End If
Next
MsgBox ("解無し")
End Sub
これって、もっとスマートな書き方は無いでしょうか?
543 :
デフォルトの名無しさん :2006/04/15(土) 10:00:17
>>541 っつーか、google で検索すれば殆ど何でもあるぞ。
>>542 十分スマートで素直じゃん。
絶対にバグの入り込む余地がないし。
545 :
デフォルトの名無しさん :2006/04/15(土) 12:35:57
ある程度条件絞り込めるな。 上3つから X = 19 + 30n(n >= 0) までは簡単に出る。
546 :
デフォルトの名無しさん :2006/04/15(土) 12:49:29
>>542 For X = 1 To 100000 Step 1
この時点で問題の要件を満足していない。
答えが必ず100000までの中にあると決めている。
なんか下らんレスしかできない痛々しい奴が多いな。 「ヒント」だとかさ。 馬鹿だからよくわからない、 しかし人様に偉そうに教えを垂れてはみたい、っていう幼稚な心象がミエミエ。 見てるこっちが恥ずかしいよw
>>542 変に小細工するよりそれでいいと思う。
ただ、せめてネストの順序は逆にした方がいいね。
あえて小細工するならこんな感じか?
Private Sub Command1_Click() Dim X As Long For X = 1 To 100000 If MeetConditions(X) Then Exit For Next MsgBox ("答えは「" & X & "」です!") End Sub
Private Function MeetConditions(X As Long) As Boolean MeetConditions = MeetConditionN(X, 1) End Function Private Function MeetConditionN(X As Long, N As Integer) As Boolean Dim meet As Boolean Select Case N Case 1 meet = ((X + 330) Mod 41 = 0) Case 2 meet = ((X + 30) Mod 11 = 0) Case 3 meet = ((X + 6) Mod 5 = 0) Case 4 meet = ((X + 2) Mod 3 = 0) Case 5 meet = ((X + 1) Mod 2 = 0) MeetConditionN = meet Exit Function End Select If meet = False Then MeetConditionN = False Else MeetConditionN = MeetConditionN(X, N + 1) End If End Function
分かり難いな。 別の人がメンテするのも大変そうだ。
553 :
デフォルトの名無しさん :2006/04/15(土) 14:08:20
41の倍数から始めた方がループの回数は少ないな。 Const Max = &H7FFFFFFF Do N = N + 1 If N > (Max) / 41 Then MsgBox ("忙しいから又今度ね!") Exit Sub End If If N Mod 1000 = 0 Then DoEvents End If X = 41 * N - 330 If (X + 30) Mod 11 = 0 Then If (X + 6) Mod 5 = 0 Then If (X + 2) Mod 3 = 0 Then If (X + 1) Mod 2 = 0 Then MsgBox ("答えは「" & X & "」です!") Exit Sub End If End If End If End If Loop
>>553 よくそんなんで人様に教えを垂れる気になれるなあ。。
アルゴリズムを競うとか、趣味のプログラマならともかく、
プロの、仕事としてコードを書くプログラマなら、
>>542 が正解でしょうね。
プロならDim X なんて書かないけどな。
>>542 俺ならこう書く。
Private Sub Command1_Click()
Dim X As Long
For X = 1 To 100000 Step 1
If foo(X) = True Then
MsgBox ("答えは「" & X & "」です!")
Exit Sub
End If
Next
MsgBox ("解無し")
End Sub
Private Function foo(ByVal n As Long) As Boolean
foo = False
If (n + 1) Mod 2 <> 0 Then Exit Function
If (n + 2) Mod 3 <> 0 Then Exit Function
If (n + 6) Mod 5 <> 0 Then Exit Function
If (n + 30) Mod 11 <> 0 Then Exit Function
If (n + 330) Mod 41 <> 0 Then Exit Function
foo = True
End Function
>>542 こんなのはどうですか?
Dim n As Variant
Dim i As Long, j As Long
Dim found As Boolean
n = Array(Array(1, 2), Array(2, 3), Array(6, 5), Array(30, 11), Array(330, 41))
For i = 1 To 100000
found = True
For j = LBound(n) To UBound(n)
If ((i + n(j)(0)) Mod n(j)(1)) <> 0 Then
found = False
Exit For
End If
Next
If found Then
MsgBox "答えは" & i & "。"
Exit For
End If
Next
If found = False Then
Debug.Print "答えはなし。"
End If
この手の話題はみんな喰い付きがいいな。
みんな、俺が一番って思っているからでしょう。
私の場合、インデントとかレイアウトにも拘りがあるけど、 ここに書き込むと全部先頭の空白が詰まっちゃうから 書き込まない。
空白が詰まらない方法で書けばいいじゃないか。
>>557 だから繰り返すけど、せめて条件判断の順序は逆にしないとね。
この手の問題は解析的に解いてしまってはそもそもプログラムの出番はない。
その点はそうなんだが、だからといって何の工夫もないのもね。
解析的って意味を勘違いしてないかい? 例えば方程式の解をニュートン法を使って力技で求める方法に対して、 人間がやるように解くことを解析的っていうんだよ。 この問題でいったら、計算機使って小さな値から総当り的にチェックするんじゃなくて 算数的に理詰めで答えを出しちゃうことを言ってるわけ。
>>566 ん?
誰が「算数的に理詰めで答えを出し」たの?
もういいよお馬鹿さんはウンコして寝てな
569 :
デフォルトの名無しさん :2006/04/15(土) 21:02:13
馬鹿ばっかり
おれモッコリ
571 :
デフォルトの名無しさん :2006/04/15(土) 21:29:05
「スタート」ボタンの上にマウスを置くと表示される「このボタンから始めます」 ってやつを、button1の上にマウスを置いた時に表示させたいんだけど、どうしたら いいの?
すみません、自己解決しました。
>>571 ヒント:Command1.ToolTipText = "このボタンから始めます"
574 :
542 :2006/04/15(土) 22:10:50
>>542 の質問をした者です。なんだか、お騒がせしてしまってすみません。
ええと、算数的にというか、紙の上で計算してしまうほど工夫を凝らすのはやっぱり意味ないですよね。
せっかくパソコンとVBがあるんですから。その上で、自分が書いたものは、あまりにもそのまま過ぎる
感じがしたので、みなさんに質問させていただきました。
で、条件判断の順序を逆にするというのは納得です。あと思ったのは
「1 を加えると、 2 で割り切れる」っていうところからXは奇数に決められるので、
For文を使うなら Step 2 にしてもいいですよね。単純に処理が半分になる。
575 :
542 :2006/04/15(土) 22:20:30
それと、自分的にひっかかってたのは
>>546 のことなんです。
最初「For X = 1 To 10000」としたものの、答えがそれ以上だったので書き換えたという
経緯があり、上限決めちゃダメかも、と。
でも
>>553 の「Const Max = &H7FFFFFFF」は知らなかったので勉強になりました。
上限にするならそこですね。
あとは、そうですね、
>>557 のようにFunctionプロシージャにして分けちゃうのもいいですね。
Trueを返す式があれば、上限をConst Max = &H7FFFFFFFにしてDo~Loopでいくとか。
576 :
542 :2006/04/15(土) 22:24:07
あ、Step 41 でもいけますよね。けっこう暗算しなきゃいけないですけど(^_^;)
そもそも、何故あんなサイトの問題に其処迄拘泥するの?
578 :
542 :2006/04/15(土) 23:12:50
>>578 君のおかげで、久し振りにココが活性化したよ。
580 :
デフォルトの名無しさん :2006/04/16(日) 10:28:31
この問題の一番難しい点は、 1、解が無いかもしれない。 2、求める数値が非常に大きいかもしれない。 この2点を考えると、LoopやForで解く方法は好ましくない。 Select Caseは笑止。
580はリカーシブコールが理解できないみたいだねw
583 :
デフォルトの名無しさん :2006/04/16(日) 10:55:24
>>582 知らん。
ここはVBのスレだ、数学のスレに行け。
>>583 だから、「LoopやForで解く方法」以外のVBコードを示せと。
585 :
デフォルトの名無しさん :2006/04/16(日) 10:58:36
>>582 どのレスがリカーシブコールだ、知らんのはおまえだろうw
>>585 知らずによく批判できるもんだな。
まあ最初から批判が目的なんだろうけど。
そんなことしても、そこまでして人に相手にしてもらいたい自分がミジメになるだけだと
思うんだがね。
中高生だったら、そんなことしてると不幸になるぞ、細木和子みたいな言い草だが
18以上ならご愁傷様君の人生終わってるわ。
リカーシブコールってのは
>>550-551 のこと
587 :
デフォルトの名無しさん :2006/04/16(日) 11:13:27
馬鹿なので議論ができん、の間違いでしょ?w
591 :
デフォルトの名無しさん :2006/04/16(日) 11:32:50
おまえは議論の論点が判っているのか? わけの分からん文言を並べてて、ごまかすのはやめろ。 おまえが書いた、 For X = 1 To 100000 これは、出題のどこから導き出したものだ。 しかし驚いた、単にCaseを切り替えるだけの為に、再帰を使うとは。 おまえの書いたコードの唯一の利点は、おまえ以外に用意にコードが 理解できないことだ、機密保持にはもってこいだなw
592 :
デフォルトの名無しさん :2006/04/16(日) 11:39:12
>>591 そんなの問題でもなんでもないよ、悪いけど。
なぜなら「それで現に答えが出るから」。
誰も、「この」問題でなければそのようにはしないけど。
例えば、個別の条件判断の2のパラメータに任意の値を指定できるようにする、
というような問題ならforループで試行する数値の上限を決めうちするような
コードは書かない。
こんなの当たり前のことで、青筋立てて偉そうに言うようなことじゃないよ悪いけど。
>しかし驚いた、単にCaseを切り替えるだけの為に、再帰を使うとは。 同意。 たぶん最近再帰を覚えたんで使ってみたかったんじゃないかな?
馬鹿らしいなw
ふーんそうかい、じゃあ再帰呼び出し(単に「再帰」じゃ意味をなさんよw)を使わず、
IFをネストしないようなコードを提示してみ?
>>557 みたいな「ぶらさがり」を使って見た目だけネストがないように
見せかけるコードもなしね。
まあ各条件を個別に関数化するようなコードになるはずだが、
それが可読性や保守性の点からより望ましいといえるかね。
>>591 「おまえ」て誰?
アンカー位付けてよ。
最近2chに来た人?
597 :
デフォルトの名無しさん :2006/04/16(日) 13:43:01
>>595 >可読性や保守性の観点からすれば
再起よりはIFのネストのほうが良いと思う。
一回とか二回だけあの問題を解く、ってんなら最初ので十分。 パフォーマンスが要求されて、初めてアルゴリズムを検討するな。俺なら。
601 :
デフォルトの名無しさん :2006/04/16(日) 14:47:34
>>595 IFをネストしちゃいけないなんて誰が決めたんだ。
>>599 そこだな、数学というのはプロセスを重視する学問なんだ、
とりあえず答えが出ました、ではだめなんだな。
数学者は、一つの証明を5~6年考え続けるのなんてザラらしいね。
>>591 > For X = 1 To 100000
> これは、出題のどこから導き出したものだ。
出題には条件を満たす最小の値と書いてあるから、
100000以内にあるだろうというめぼしを付けただけだろ。
なければ増やせばいいだけ。
>>580 > この問題の一番難しい点は、
> 1、解が無いかもしれない。
> 2、求める数値が非常に大きいかもしれない。
> この2点を考えると、LoopやForで解く方法は好ましくない。
> Select Caseは笑止。
解が無いものをプログラムで説くことは出来んよな。
コンピュータが苦手な証明の問題。
完全に数学の問題だよ。すれ違い。
>>601 そういうことはどうでもいいから、
お前が考えた答えを言ったら?
しかし、あの条件を満たす数値がちゃんと存在したのが驚きだ。
607 :
デフォルトの名無しさん :2006/04/16(日) 20:40:37
>>605 そんなものは知らんといってるだろ。
考える気にもならん、数学の板に行け。
んもー。ぬるぽ。
まあ、再帰はないだろ。わざわざこんなところで使うか?
再三つっこんで悪いけど、だから「再帰」なんて言い方はしないよw っていうか、最初から「あえてする小細工」だと書いてあるのが読めないのかな
リエントリ、つまり再入、って言い方はするけどもね
小細工というよりは不細工。
なんかやたらと文の最後に「w」とかつけるやつがいる。 頭悪そう。
617 :
デフォルトの名無しさん :2006/04/17(月) 02:03:59
VB6のIDEの設定を標準に戻す方法を教えていただけないでしょうか。 VS2003は環境設定に「標準に戻す」ボタンがついていたのですが…。
>>618 そんなの聞いてどうするんだ?
変更箇所を何箇所も羅列してほしいのか?
そもそもそれがわからんから、標準に戻す方法なんだろ。
>>619 そんな事はいいから、その方法を教えてやれよ。
VB6でバーコードを印刷しようと思っています。 フォーム画面にアクセスのバーコードオブジェクトを用意しています。 printformで印刷はしましたが 読み取ってくれません。 もう少し綺麗に鮮明に印刷したいのですが方法はありますか? あれば その方法をご指導いただけませんでしょうか? VB単体で動かそうと思っているのですが無理な話でしょうか?
>>621 プリンタの印刷能力と、バーコードの仕様の問題でしょ?
機器メーカーのHPとかに、初歩的なバーコードの知識ってあるから見ておいたほうが良いよ。
細い線と太い線の比率、細い線の最低幅が決まっていて、
プリンタがその細さを出せないとか、ドライバ等の都合で比率を変えている場合はNG。
VBがどうこうじゃなくプリンタの問題。
まあ、あとそもそもでオブジェクトを大きめにはっつけて、大きめに印刷すれば?
あと、PrintFormはビットマップ経由だっけ?そんなことせずに付属のDataReportとかを使うとか。
もっと言えばMDB経由でACCESSのレポート機能使うとか。
>>621 バーコードは画面に表示した時点でかなり潰れてる。
どんなに拡大しようが無理だった覚えがある。
直接プリンタオブジェクトに出力すること。
つ バーコードフォント
>>625 あれは種類がかなり限定すぎるし、細かい設定が出来なかったよね。
チェックでじっととかスタートすとっぷびっととか。
バーコードOCX買えばいいじゃん。
>>624 直接 プリンタオブジェクトって…
printer."バーコードオブジェクト"でおkですかね?
629 :
デフォルトの名無しさん :2006/04/19(水) 08:58:50
>>627 それもなかなか欲しいのがなかったり・・・
RSSとか・・・使いたい帳票OCXに対応していなかったり。
630 :
デフォルトの名無しさん :2006/04/19(水) 09:03:17
転送電話の切り換えに、telephonyAPIを使って、モデムで電話をかけたい のですが、資料があまりありません。MSDNに資料があるでしょうか?
モデムのマニュアル見ればいいじゃん。
モデムなんてシリアル通信ができればなんでも制御できるんじゃね?
633 :
デフォルトの名無しさん :2006/04/19(水) 09:51:40
VB6+Accsess2000+Crystal Report10で帳票出力アプリを作っています。 印刷関数printReportを下記(*)のように書きました。 この関数は下記(**)のように呼び出しています。 このコードを動かしたところ、ループの始めの印刷はうまくいくのですが、 それ以降値の入っていないレポートが出力されてしまいます。 レポートを直接開いてプレビューを見ると、空のレポートにも値が存在していることが確認できます。 申し訳ありませんがご意見などいただけないでしょうか。 ちなみにクリスタルレポートのファイルとDBはADOでつないでいます。
634 :
633 :2006/04/19(水) 09:52:14
'印刷機能...(*) Public Sub printReport(slipID As String) Dim filePath As String filePath = "D:\hogehogeho\" 'クリスタルレポート設定 Dim cr10App As CRAXDRT.Application Dim cr10Report As CRAXDRT.Report Dim ExportOptions As CRAXDRT.ExportOptions Set cr10App = New CRAXDRT.Application Set cr10App = CreateObject("Crystalruntime.Application.10") Set cr10Report = cr10App.OpenReport(filePath & "rptSlip3.rpt") Set ExportOptions = cr10Report.ExportOptions '出力先の指定 ExportOptions.DestinationType = crEDTDiskFile '出力ファイル名の指定 ExportOptions.DiskFileName = filePath & slipID & ".pdf" '出力形式の指定 ExportOptions.FormatType = crEFTPortableDocFormat cr10Report.PrintOut False cr10Report.Export False Set cr10App = Nothing Set cr10Report = Nothing Set ExportOptions = Nothing End Sub
635 :
633 :2006/04/19(水) 09:53:10
'呼び出し方...(**) For i = 0 To XX slipID = XXXX Call slipPrinter.createOrderCombination(slipID)'データの準備 Call slipPrinter.printSlip(slipID)'印刷 Next
>>623 エクセルにアクセスのバーコード機能(オブジェクト?)使って印刷したことある。
エクセルはライセンス必要だけど、アクセスはフリーの機能だけで使えた。
637 :
デフォルトの名無しさん :2006/04/19(水) 22:19:44
VB6 SP5 ユニコード文字の入ったファイル名を扱うAPIなどはあるのでしょうか。 たとえばハート(Unicode:0x2665)は dir関数だと「?」に変換されてしまいます。 ご教授願います。
>>638 うーん。strconvだとDir関数でファイル名を取得した後になりませんか?
dir関数で既にshift-jisに変換されているみたいなのですが
まともにUNICODE使いたかったらVB.NET使ってくれよ
642 :
デフォルトの名無しさん :2006/04/19(水) 23:43:16
>>640 「Windows APIのユニコードバージョンを使う方法」でうまくいきました。ありがとうございました。
>>641 あのね。「6.0以前」スレに質問してるんですけど。
熱くなると負け、これ常識。
>>642 6.0以前スレに質問してるのはわかっているが、そんなことするんだったら6.0なんて
使わずにVB.NET使ってくれよ、って言いたかったんじゃないか?
回りくどいけど。
もう解決してるみたいだけど、別にVB.NETじゃなきゃできないわけでもないしなぁ。
645 :
デフォルトの名無しさん :2006/04/20(木) 00:38:36
VBが25000プロジェクト程(VBP)あるのですが そのプロジェクトが持っている画面とかコントロールの種類を 各々を集計するために全てあわせて何種類のコントロールがあるか 算出したいので簡易的にそんなコントロール種類列挙方法があれば教えてください。
VBPを一個ずつ読み込んで集計すればよいだけでは
>>645 grepで適当に抽出して解析スクリプト書いて集計
>>645 Type *.Vbp | Sort | Uniq | Find "Object=" > Ocx.Txt
WinXpPro vb6.0 sp6 TreeViewでの親NodeのKey指定に関してなんですが Dim MainNode As Node Dim OyaNode As Integer '親Nodeの番号 OyaNode = OyaNode + 1 With Me.TreeView ' ノードのソートを認めない .Sorted = False ' ノードのラベルは編集できない .LabelEdit = False ' Viewのラインとルート線の種類を定義 .LineStyle = tvwRootLines ' ルートノードを作る Set MainNode = .Nodes.Add(, , OyaNode, "親Node1") End With ' 2代目と3代目の子ノードを作る With TreeView ' 息子ノードをフォルダアイコンで表す .Nodes.Add OyaNode, tvwChild, , "子Node1" End With といった感じでKey指定を変数で行いたいのですが、この状態で実行すると「無効なキーです」 とエラーが出てしまいます。 ヘルプで調べたところ「Key名は1つのノードにつき一意でなければならない」とあったのですが これは変数ではなく定数でないといけないということなのでしょうか?
>>648 どうしてUniqしてるのかわからないです
Uniqいらなくないですか?
>>651 聞く前に、ありとなしでやって較べてみたの?
VB6でWebBrowserコントロール使って タブブラウザぽいの作りたいんですが タブでそれぞれページを表示するとこ まではできたのですが、 (動的にWebBwroserコントロールを追加 していくことで) タブごとにActiveXやjavascriptの設定を いじるやり方がわかりません レジストリの HKEY_CURRENT_USER\SoftWare\Microsoft\ Windows\CurrentVersion\Internet Settings\ Zones\3 にIEのインターネットゾーンのセキュリティ設定 が書き込まれているみたいなので これをいじろうと思ったのですが、どうやればよい のかわかりません sleipnirとかはどうやっているんだろう?
655 :
648 :2006/04/22(土) 10:50:35
>>651 すまそ
私は最初の質問者じゃないんです
win2000pro,vb6.0sp6で
ためしにフォームにButtonとLabelを貼り付けて
プロジェクトを保存して、
できたvbpファイルをテキストエディタで開いて
みたんだけど
Object=なんていう行は一個もなかった
ThreadPerObjectならあったんだけどこれは違うよね
656 :
653 :2006/04/22(土) 10:55:59
>>654 ごめん質問の仕方が馬鹿だった
レジストリのいじりかたはわかってるんです
RegSetValueEx
とか使えばいいんだよね?
そうじゃなくて
例えばタブでIEが3つ表示されているときに
一つめはデフォルトセキュリティ設定で
二つめはActiveXだけ禁止で
三つめはjavascriptだけ禁止で
っていうふうにやりたいんだけど
これを実現する方法がわからないんです
>>655 そりゃ標準以外のコントロール貼らないとある訳ないでしょ。
658 :
653 :2006/04/22(土) 11:45:05
>>658 VBPに残らないのはFRMを見るしかないね。
>>659 Begin VB.Label
Begin VB.Shape
Begin VB.Line
Begin VB.OLE
Begin VB.Image
Begin VB.OLE
Begin VB.PictureBox
Begin VB.TextBox
Begin VB.Frame
Begin VB.CommandButton
Begin VB.CheckBox
Begin VB.OptionButton
Begin VB.ComboBox
Begin VB.ListBox
Begin VB.HScrollBar
Begin VB.VScrollBar
Begin VB.Timer
Begin VB.DriveListBox
Begin VB.DirListBox
Begin VB.FileListBox
Begin VB.Data
661 :
デフォルトの名無しさん :2006/04/22(土) 13:32:36
>>653 要するに
>>645 の回答としては、簡単な方法は無い、と言うことかなあ。
>各々を集計するために全てあわせて何種類のコントロールがあるか
>算出したいので簡易的にそんなコントロール種類列挙方法があれば教えてください。
余計なお世話なんだけど、これって何に使うの?
Begin VB.Form Form1
・
Begin VB.Form Form2
・
たとえばこれは、Formのコントロールがあると数えるの、
それともFormを継承したコントロールが2つ有ると数えるの?
つまり、親のコントロールの種類を数えたいのか、派生したコントロールの
数まで数えたいのか、はたまた両方とも数えたいのか。
何に使うかによって、数え方が異なって来ると思うのだけど。
>>653 >レジストリのいじりかたはわかってるんです
だったらやれよw
WebBrowser.ApplicationをIOleControlにキャストして
OnAmbientPropertyにDLCTL_NO_SCRIPTSを指定する
DLCTL_NO_SCRIPTS'スクリプトの実行拒否
DLCTL_NO_JAVA'Javaの実行拒否
DLCTL_NO_RUNACTIVEXCTLS 'AxtiveXの実行拒否
DLCTL_NO_DLACTIVEXCTLS 'AxtiveXのダウンロード拒否拒否
とかある
でもVBにはIOleControlインタフェースが定義されていないからVSでタイプライブラリで自作ね
ここ参考
http://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp
663 :
デフォルトの名無しさん :2006/04/23(日) 21:24:47
>>663 そりゃ「制限」ユーザなんだから色々あるだろ。
そもそも、XPでVB6は駄目だけど。
動作確認されて無いだけで、 駄目ではないぞ。
>>665 いや2000では何の問題もないのにXPでは動かない、って例が沢山。
って、一つあるだけでもう駄目なんだけどね。
>>666 その例もださずに原因も推測せずに
なまいってんじゃねーよ
>>667 原因→VB6が世に出た時に、XPは存在しなかったから。
>>668 XPに対応してないんだな。
>>669 MSはVB6自体はXPに対応していないと言ってるけど、VB6で作ったアプリはXPに対応しないとは言っていない
読む限りだと、アプリやコンポーネントの開発元が個別に動作確認してOKって言ったらOKだよって感じ
>>670 趣味でやるのは全然構わないんだけど、
仕事でXP+VB6のシステムを提案するなんて事は、
少なくとも私には絶対に出来ない。
運用環境と同じ環境でテストしなければならないけど、
XPにVB6の開発環境なんて入れたら色々壊れるし。
例え「アプリやコンポーネントの開発元が個別に動作確認」しても、
VB6そのものがXP上で何一つテストされてないんだし。
まぁ、一通り動作確認して、その後不具合が出たら都度対応、
になるんでしょうな。
思考力の欠如した奴ばっかりだね。 XP環境でVB6のアプリの動作は問題ないですって。 Win2KやWin9xで問題がない程度には。
30キロ制限の道を80キロで通るくらい問題無い。
>>672 問題ないってのが、業務で客に勧めるレベルじゃないからね。
自己責任だったら別に使うけど、客に入れるシステムじゃ責任もてないから使えないって言う。
MSが保証していないものを保証する
>>672 は度胸あるよ。
675 :
デフォルトの名無しさん :2006/04/24(月) 13:15:20
>>671 客に勧める側なんだからコストに見合うと判断すれば勧めても良いだろ
別に調査の名目で金を取って問題点を致命的と報告して新規開発の案件に変えると言う手もある。
その辺は客との関係次第だよ
>>675 金の問題じゃないんだけど。
何度も書くが、XPはVB6よりも後に出た。
つまり、XP上でVB6のシステムを構築したとして、
何らかの重大な不具合が出た場合、原因を調べて、
アプリのバグではなく、VB6かXPが悪かったとする。
そして、アプリ側では回避方法がない場合。
VB6のSPを出せとか、それに対するXPのパッチを
リリースしろとか、MSに言えるのか?
もしそれが、全国規模で展開した何万台ものPC上で
発生したらどうするつもりなの?
一応動作確認したとか2000等と同じ程度に動くとか、
そんなレベルでプロとして仕事してる?
客からは金取って納めてしまったんだから、MSが、
XP上でVB6は駄目だと言ってます、なんて言い訳が
通用する筈がない。
677 :
デフォルトの名無しさん :2006/04/24(月) 13:28:36
>>676 お前さんの主張を要約すると結局金の問題だろ
XPがOKな言語がたくさんあるのに固執してまでVB6なんぞ使わないな 新規なら。
>>677 横レスだが、金の問題じゃない。
MSがサポート終了してるし、そもそも対応してないんだから、それを客に進める奴は根本的に何か間違ってる。
681 :
デフォルトの名無しさん :2006/04/24(月) 14:25:02
>>680 対応してないとか嘘つくなよ
MSは元々ソフトウェアハウスが作ったアプリは個別に動作確認してくださいって言ってるだけだよ
それを言い出したら、XP上の.NET製のアプリでもMSは動作保証してくれて無いぞ
ただ、サポート切れてるから不慮の事態に対処できないとの免責事項無しでの契約は厳しいな
>>681 VB6の「開発環境」は、XPに対応してない。
VB6で作成したアプリに関しては、その通り。
サポート外なのって開発環境そのものの動作だろ つーか、98とかのOSの非サポートと一緒にスンナ馬鹿
VistaでもVB6.0ランタイムの動作は保証したいと言ってる
XP+VB.NETで開発してる人って居るの?
そりゃあいるだろう 俺のまわりではC#使うほう人が多いようだが
質問です 環境:WindowsXP SP2 & VB6 作ってるモノ:Winsockを使ったファイル送受信(バイナリデータ) 概要: 1 アプリ起動して最初の2,3回は送受信ともにうまく動く 2 2,3度ファイルを送受信しているうちに送受信するデータの1バイト目が抜ける現象が続けておきる(結果、総取得ファイルサイズは1バイト少なくなる) 3 自分が組んだプログラムが悪いのかと思いデバックやりまくりだが見つからず 4 Socket_DataArrivalイベントで最初の数バイトをファイルに落とす前に見てみたら、すでにその時点で1バイト落ちていた
Winsockバージョンは6.0.81.69 SP2のファイアウォールが入れてあるだけで他のセキュリティソフトは入ってません どうかよろしこm(_ _)m
>>687 やり方が間違ってるに1票・・・てか、手銃も解らないのに答えられるのか疑問
・サーバにリクエストがやってくる ・データ受信用ソケットにaccept ・Data_Arrivalイベでデータ取得 と、フツーなやり方です Private Sub DownloadSocket_DataArrival(ByVal bytesTotal As Long) Dim Data() As Byte DownloadSocket.GetData Data,vbByte ' ここのトコでData()配列の先頭見ると1バイト抜けてる Winsockからデータを取り出す時点ですでに抜けてるから ソケット自体かシステム的なものが原因と思うけど、そういうコトってある??
>>691 XP上でVB6は動作保証されてないから、
そういう事もあるでしょうね。
まずWin2000で動かしてみては。
>>692 OSのせいとは思えないがね。
適当なこというなよ。
>>693 自分のバグだと分かってるなら
「ソケット自体かシステム的なものが原因と思う」
って何なの?
696 :
687 :2006/04/24(月) 21:48:51
>>694 サンクス
でも、なんか無理っぽい
GetDataのオプションの組み合わせいろいろ試してみたけど、やっぱ先頭1バイトが抜けてくる。。。
.NET関連調べてきますorz
>>696 2000とか98(SE)で動かしてみた?
698 :
687 :2006/04/24(月) 22:49:04
XP環境しかないからわからないす
700 :
デフォルトの名無しさん :2006/04/25(火) 07:56:07
朝っぱらからすみません。教えてください InternetControlsっていうコンポーネントが標準でありますが このコンポーネントを利用して現在、指定したURLのブラウザに ある文書を取得するようなプログラムを作ってるのですが 同コンポーネントを利用して、配置されてるボタンやテキストボックスなどの コントロールを取得したりボタンを押させるような処理を作る事は できますでしょうか?代替の方法でももしありましたらアドバイスおねがいします WIN2000、VB5でつくっています。
701 :
デフォルトの名無しさん :2006/04/25(火) 07:59:47
>>696 自分のプログラムのバグの可能性99.9%.
文字コード0x2020を出力したいのですが open "c:\test.txt" for output as #fp len = 32000 print #fp,chr(&h2020) close #fp とすると、test.txtには20の文字コード(半角スペース)が 出力されます。 chrが&h2020を20に変換してるようなんですが&h2020が 文字コードとして存在しないため20に変わっているんでしょうか。 &h2020を&h82a0("あ")に変更すると正しく"あ"が出力されます。 文字コード&h2020を直接ファイルに出力する方法はありますでしょうか?
704 :
デフォルトの名無しさん :2006/04/25(火) 11:19:38
705 :
AMI :2006/04/25(火) 11:25:45
こんにちは。 早速ですが、質問させていただきます。 現在、Vb6.0+ACCESS2000を使用してシステム構築をしております。 そこで、ACCESSファイルにVBから接続をおこなっております 。 パスワードを設定してある、ACCESSファイルに、接続はできたのですが、 VB側から、ACCESSファイルにパスワードを設定、解除等できるのでしょうか? ACCESSは、ツールから設定・解除ができるんですが、 VB側からその操作はできないのでしょうか? よろしくお願いします。
>>703 「chrが&h2020を20に変換してるようなんですが」って分かってるなら、
わざわざ変換しなけりゃいいじゃん。
>>705 「ACCESSは、ツールから設定・解除ができる」のなら、
それをVBAで記録してみるとか。
ACCESSファイルってのがMDBファイルの事を言ってるのであれば その辺の事はDeveloperEditionに付属のドキュメントに詳しく書いて有るからきちんと買って読みなさい
709 :
AMI :2006/04/26(水) 09:16:17
>>707 >>708 ありがとうございました。
VBAを使う方法は、前回使用しておりましたので、
今回はVB側からそれの設定をしたいのです。
VB側からの操作はできるのでしょうか?
・32767行を超えて使えるリストボックス ・文字数無制限のテキストボックス の作り方、または製品があれば教えてください。
>>710 Microsoft RichTextBox Controlじゃダメ?
712 :
710 :2006/04/26(水) 10:16:25
>>709 そのVBAをVBで実行すりゃいいだけだろ。
715 :
デフォルトの名無しさん :2006/04/26(水) 10:54:56
ソフトの起動時に 「販売購買(作ったソフト名)が原因でNSVBVM60.DLLにエラーが発生しま した。販売購買は終了します。 問題が解決しない場合は、コンピュータを再起動してください。」 とエラーメッセージが出るようになってしまいました。 NSVBVM60.DLLについて調べてみたのですが、出てくるエラーメッセ ージは見つからないというのばかりのようです。 今回のような現象の場合はどう対処したらいいでしょうか?
>>712 動作の遅さはハードの増強で解決するのが基本。
>>715 そのソフトを作った人に聞いた方がいいよ。
あと、MSVBVM60.DLLだろ?
>>717 MSVBVM60.DLLでした、失礼しました。
作った人も困ってしまったので、いっしょに調べていました。
>>715 「エラーメッセージが出るようになってしまいました」って事は、
前は出なかったんでしょ。
「何をやったら」そうなったかを思い出せば解決。
>>719 そうですね、早速お客さんの事務所まで行ってみます。
戻りましたらまた報告するつもりです。
721 :
720 :2006/04/26(水) 17:07:44
行って直接話を聞いてきました。
お客さんの事務所ではサーバーを置いて3台のクライアントでソフトを使っても
らっています。クライアントは2台がMeで1台は2000です。
使っているDBはOracleです。
>>715 のエラーは特別別のソフトはいれていないのに最近になって毎日のように
出るようです。ただエラーが出るのはMeのマシンだけのような事を言っていたの
が気になります。2000にVB環境が入っているので、そこでexeを作っているので
すが、そういう部分も関係があるのでしょうか?
722 :
720 :2006/04/26(水) 17:10:39
それプラスでソフトを起動しようとすると「接続できません。ORA-12571:TNS: パケット書込み機能に障害が発生しました」ともエラーが出ます。 こちらのエラーは再現することができました。連続でExeを起動・終了を繰り返 していると10回に1度くらいの割合で起こってしまいます。 この辺はOracleスレで質問した方がいいでしょうか?
>>722 ORACLEスレに聞いても、サポートに聞けで終わりの類のエラーだよ。
なもんで、ORACLEに聞け。
>>721 Meで動かすアプリを2000で開発したら駄目だって。
Meで動かすアプリは、Me上に開発環境を入れて、
其処で、開発&デバッグしてExe作成しないと。
でも、既に2000でセットアップ作成してMeにインストール
しちゃったんだよね。
それ、Meのシステムが完全に壊れました。再インストール。
725 :
デフォルトの名無しさん :2006/04/26(水) 22:02:16
VB6でWMAファイルの再生時間をミリ秒単位で取得したいのですが、方法を教えていただけないでしょうか? よろしくお願いいたします。
726 :
デフォルトの名無しさん :2006/04/26(水) 22:46:25
727 :
726 :2006/04/26(水) 22:49:42
>>725 ごめん。直接は取得できないみたいだから
スタートのところに
gettickcountとかいれておけばいいんじゃないでしょうか。
後はループで取得するようにすれば
Dim nt as long,ft as long
nt=gettickcount()
do
debug.print cstr(gettickcount()-nt)'CSTRいらないっけか
doevents
Loop
ファイルの再生時間、と書いてあるが。。。
729 :
725 :2006/04/26(水) 23:05:36
言葉足らずで、申し訳ないです。 すでに存在するWMA形式のファイルの時間です。 再生すると 00:01 / mm:ss 見たいに出ますよね? そのmm:ssが知りたいのです。
>>729 MediaDet.StreamLength で取得できるらしいけど、単位は秒。
>>729 Dim grp As New FilgraphManager
grp.RenderFile FILENAME
Dim mp As IMediaPosition
Set mp = grp
Debug.Print mp.Duration
こんなんでどう?
>>725 MMControl の Length とかじゃ駄目なの?
733 :
725 :2006/04/26(水) 23:48:40
みなさんありがとう
>>731 さん
明日試そうと思うのですが、ミリ秒で取れますか?
>>732 さん
MMControlってWMA形式サポートしてますか?
試してから書けよボケ
>>733 当然、自分の環境で確認してから書き込んだんだが?
736 :
デフォルトの名無しさん :2006/04/27(木) 12:42:53
>>724 えっ
Me用と2000/XP用でマージモジュール分けて使ってないの?
>>736 それをやると具体的にどんなファイルが分かれるんだ?
Tabindex を使ったカーソル制御で困っています。 Tabindexで各コントロールに順位を付け、Enterkeyやマウスで、あるコントロール以降に移動するときは(LostFocus内で) 入力チェックをしてひっかかれば自コントロールに戻り、以前のコントロールに移動するときはExitSubでチェックせずに 抜けるようにしています。 各コントロールにGotFocusしたときに、共通の変数でTabindex番号を取得して、LostFocus内で比較しているのですが… 通常、移動先コントロールのGotFocusイベントの後に移動元コントロールのLostFocusが起きていて、実際に同じForm内の 他のコントロールではうまく動作しています。 しかし、ある部分では全く同じ記述をしているにもかかわらず、LostFocusイベントが先に起こり、うまく動作しません。 (しかも、うまく動作しているのと同じプロパティと記述の方法で、コントロールの名前しか違いはありません)。 何か気をつける点はあるでしょうか。 …ネットで少し調べたところ、「GotFocusが最初に起こる」というのと「どちらが先に起こるのかは不安定」という記述があって 困ってしまいます。
739 :
738 :2006/04/27(木) 19:11:26
自己解決しました。 「DoEvents」 とプロシージャ内におまじないを書いたらちゃんと動きました。 一体何なんでしょうね。
740 :
725 :2006/04/27(木) 21:24:16
731さんの案で解決しました。 MSDNには秒単位と書いてあったので、少しどきどきでしたが、 ちゃんとミリ秒で取れました。 皆さんどうもありがとう。
>738 一つだけ言うなら、明確に順序が書かれているもの以外、イベントの 発生順序が同じになると言う保証はない。 だからイベントの発生順序に依存するロジックは危険。
LostFocusじゃなくてValidationつかえやl
>>739 Lost / Got Focus イベントにコードを書く奴が悪い。
すれ立てるまでもない質問とマルチになります。レスがつかなかった。 VBで以下のようなのはどうやって書くのですか?できないような気がする。Aの間にある + でひっかかる A( i , j ){・・・ ;return A( i+1 , j )+A( i , j+1 );}
>>745 Function A(i, j)
:
:
:
A = A(i + 1, j) + A(i, j+1)
End Function
747 :
745 :2006/04/28(金) 02:42:38
ありがと。subでは無理ですか
質問させて下さい NumericUpDownのボタンで数値を入力する時に 現在の数値によって、上げ、下げ幅を変えるには どうコードを書いたらいいでしょうか? 1~100までは1ずつ増加、100からは5ずつ増加、というふうに したいのです
>>748 changeのイベントで100以下だったら1づつ、それ以外なら5って
加算減算(名前忘れた)プロパティを書き換える
>>749 ありがとうございます、さっそくやってみます
ね、眠い・・・
>>747 値を返す関数 →Function
値を返さない関数→Sub
どうしてもSubしか厭なら、ByRef 引数にでもしろ。
>>751 そんな偉そうに気張って人様に垂れるようなレベルの話か
本当頭おかしいんじゃないかと思うよこういう奴w
>A( i , j ){・・・ ;return A( i+1 , j )+A( i , j+1 );} そもそも、Subじゃ無理だし・・・
755 :
745 :2006/04/28(金) 23:56:29
>>753 おれができないことをしてみたいから。
>>751 のようなことなんだろーけど
逆なんじゃねーかと思った
>>755 俺が出来ない?
逆??
日本語でおk。
vb6を使ってPCのIPアドレスやネットワーク設定を 変更したりしたいのですが どこらへんをいじればいいでしょうか・・・・? 検索してみたんですがみつからん・・・
質問させてくださいm(_ _)m テキストファイルから該当する行の内容をとりだすコードを 書いてみたのですがレスポンスが異常に悪いのです。 Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal _ e As System.EventArgs) Handles TextBox1.TextChanged Dim objFS, objTS As Object Dim LineOfText As String Dim i As Integer objFS = CreateObject("Scripting.FileSystemObject") objTS = objFS.OpenTextFile("test.txt", 1, ) If TextBox1.Text.Length = 4 Then Do Until objTS.AtEndOfStream LineOfText = objTS.ReadLine If InStr(LineOfText, TextBox1.Text) <> 0 Then Label2.Text = LineOfText End If Loop objTS.close() End If End Sub どなたかお知恵を貸してください
解決になってないかもしれないけど、自分だったら > Label2.Text = LineOfText のあとに Exit Do って入れるなあ。 見つかったらループする必要ないし。
>>759 それ、.NETじゃないの?
その処理ならほとんどがFileSystemObjectに依存してるので
VB6以前でも.NETでも大差ないが、一応ここは6以前の専用スレね。
っこで質問したいなら、VB6の文法で書き直してから質問してちょ。
まあ、直すべきところは明白なので、VB6以前の文法で書いてくれりゃ教えるよ。
.NETもわかるけど、スレ違いを助長するようなことはしたくないし。
まあ、書き直すより.NETスレ行った方がいいと思うけどね。
762 :
759 :2006/04/29(土) 18:15:48
すいません、VB2005なのでこっちでいいのかと思っていました。 まだ、プログラミング初めて2日なもので.netとの違いすら 理解しておりません、 スレ汚し失礼しましたm(_ _)m
763 :
デフォルトの名無しさん :2006/04/30(日) 11:30:47
スレ汚しですみません。 Typeの内容を1命令でクリアする方法はありますか?
ソース上の命令数にこだわって何になるというのか
765 :
デフォルトの名無しさん :2006/04/30(日) 11:39:32
こだわらないことにしました。 大変失礼しました。
766 :
デフォルトの名無しさん :2006/04/30(日) 13:27:34
VB5とVB6の開発環境を同じマシンで混在できるのでしょうか? また、実行環境もランタイムの配布は混在できるのでしょうか?
>>766 過去ログで既出
過去ログか●持ってないなら、にくちゃんねるでも行って読んでこい。
773 :
デフォルトの名無しさん :2006/04/30(日) 15:57:10
確かに莫迦だな。
ばかばっかか
ZeroMemoryだとDeclareとあわせて2命令だとか言っちゃうぞ。
http://www.microsoft.com/japan/msdn/vbasic/support/vistasupport.aspx Visual Basic チームは、Visual Basic 6.0 アプリケーションが WindowsR Vista? でも
"そのまま" 動作する互換性を提供することを表明します。」
Visual Basic チームは、Windows XP で実行できる Visual Basic 6.0 アプリケーションが
Windows Vista でも実行できるようにすることを目標としています。
また、Windows Vista で実行できる Visual Basic 6.0 の開発環境を提供するための取り組みも行っています。
このドキュメントで説明するように、Visual Basic 6.0 ランタイムは、Windows Vista のライフサイクルをとおして
サポートされます (メインストリーム サポートが 5 年、延長サポートが 5 年の合計 10 年になります)。
マイクロソフト プロダクト サポート ライフサイクルの詳細については、
http://support.microsoft.com/gp/lifepolicy (英語) を参照してください。
マイクロソフトでは、ユーザーが Windows Vista で Visual Basic 6.0 アプリケーションを実行できるようにするため、
Windows Vista に Visual Basic 6.0 ランタイムの主要コンポーネントを同梱する予定です。
Visual Basic 6.0 ランタイムを使用するように記述されたアプリケーションが Windows XP と Windows Vista の両方で
同様に動作する互換性を確保するため、一連のアプリケーションを使用してテストを行いました。
Visual Basic 6.0 IDE は、延長サポートの一環として、2008 年 3 月まで Windows Vista でサポートされます。
Windows Vista チームと Visual Basic チームでは、Windows Vista で Visual Basic 6.0 IDE のテストを行い、
IDE が以前のオペレーティング システムと同様に機能するようにしています。
779 :
デフォルトの名無しさん :2006/05/01(月) 23:55:48
質問です。 OS:winXPsp2 VB6.0P6 課題が分かりません。 問題1 文字列→数値の変換は標準関数を使用していたが、変換関数を自分で作成せよ。 問題2 100個要素を持つ配列整数変数を宣言し、その中に1,2,3、・・・100の値を入れる 助けてください!
すいませんsageます
>>779 回答1
一度ageたら直後にsageで書き込みしても全く意味はありません。
回答2
ここは課題には一切手を貸さない方針です。
(偶に、やっと自分にもわかる質問が来たとばかりに、浮かれて答え出す教えたがり君もいるけど)
消えてください!
782 :
デフォルトの名無しさん :2006/05/02(火) 00:33:04
VIPで聞けよ! 帰れ!
やべっ!俺もageちゃった。
>>781 確かに課題は手をつけないのには大いに賛成だが
消えては言いすぎじゃね?
>>779 問題1
public static int strToInt(String s)
throws NumberFormatException {
int r = 0;
for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
if (c >= '0' && c <= '9') {
r += (c - '0') * Math.pow(10, (s.length() - 1 - i));
} else if (c == '-') {
r *= -1;
if (i > 0)
throw new NumberFormatException();
} else if (c == '+') {
if (i > 0)
throw new NumberFormatException();
} else {
throw new NumberFormatException();
}
}
return r;
}
問題2
int[] a = new int[100];
for (int i = 0; i < 100; i++)
a[i] = i + 1;
>787 先輩! strToInt("-2147483648")としたら-2147483647って返ってきました。
しかもなんで java w
>>779 1.10進数を知ってるなら出来る。
2.VBとは関係ないじゃん。
791 :
デフォルトの名無しさん :2006/05/02(火) 11:19:12
条件によって変数そのものを変えたいんですが、出来ますでしょうか? 例えば a = a + 10とあった場合、 c = falseならaのままでいいんですが、 c = trueならaの部分をbに変えたいんです。 ただし、こういう状況が多いので二重には書きたくありません。 if c = false then a = a + 10 else b = b + 10 end if のような書き方は効率が悪いので、もっと簡単な書き方がしたいのです。 どうかご教授お願いします。
言語そのものを勘違いしてる奴が来たね。 さすが黄金週。
>>793 ヒントありがとうございます。
配列を使ってどのようにやるのかは分からないのですが、
すでに変数には配列が使われていても大丈夫でしょうか?
a(2) = a(2) + 10という感じです。
出来れば簡単な例文を書いていただければありがたいのですが・・・
イマイチ質問の意図が掴みかねるんで適当に回答するけど VBはデフォで参照渡しだから、演算部分を関数化すれば何も考えずにできるんじゃないの?
>>795 非常にいいヒントをありがとうございます。
「関数が変数そのものを切り替えて返すことが出来るとすれば解決するはず」
と思っておりました。
そのヒントを元にググってみます。
>>791 If c = True Then a = b
a = a + 10
だけじゃ駄目なん?
>>797 その場限りであれば、それでもokなんですが、
プログラムを通して、aの値とbの値は常にその変数に
格納されている必要があるのです。
aの値はプレイヤー1の生命力
bの値はプレイヤー2の生命力
といった感じです。
嗚呼やはりダメです。 演算部分は関数内に記述することは出来ません。 演算はいろんなパターンがあって、メイン部分に書きたいのです。 関数内でTrueかFalseを判定し、 その結果によって変数を変化させることが出来ればいいのですが・・・ 雰囲気としては Sub s() Dim a As Long Dim b As Long Dim c As Boolean c = True f = f + 10 End Sub Function f If (c = True) Then f = a Else f = b End If End Function こんな感じに考えてましたが、もちろんエラーになります・・・
常識ある人はもうこの子を放っておこうね
ヒント:【VBはデフォで参照渡し】 これはともかく、この手の質問って「小手先でどうこうする前に仕様とかもっと前の段階から 考え直さないといけないんじゃね?」とかいうのが多くないか?
802 :
793 :2006/05/02(火) 13:14:51
aをx(0)、bをx(1)に変えて if c=True Then index = 0 else index = 1 x(index) = x(index) + 1
>>801 まさにあなたの言うとおりです。
そしてそのヒントは確実に、
僕が今やろうとしていることを的確に捉えてます。
勉強してきます。
配列のインデックスを関数で返せばいいじゃん。 Public Sub Main() Dim a(1) As Long Dim c As Boolean Dim i As Integer i = f(c) a(i) = a(i) - 10 End Sub Public Function f(c As Boolean) If c Then f = 0 Else f = 1 End If End Function
>>802 神がかり的にすごい技ですね。
感動しました。
参考にさせていただきます。
>>804 天才的ですね。
ありがとうございます。
>>804 うほ!!!!!!!!!!!!!
神!!!!!!!!!!!!!!!!!!!!!!!!
VB6です。 ラベルを回転させたいのですがいい方法はありませんでしょうか? 通常→上下左右反転という流れにしたいのです。 ご教授宜しくお願い致します。
>>808 そういうのが72通りありますのでソースを半分に縮めたかったのです。
あのような文を72通り書くのは効率悪いですよね。
IfよりIIfの方が効率は悪い。
>>811 IIfは代入する変数は同じで、値が違うときに使います。
代入する値は同じで、変数が違うときには使えません。
>>810 お前、プログラミングには向いてないよ。
>>809 ラベルコントロール自体を回転、って事?
それは無理。
>>814 そうですか?
今のプログラマはソースをより簡潔に、
短く分かりやすく書こうという努力はしないものですか?
>>817 if c = false then
a = a + 10
else
b = b + 10
end if
の何処が「分かり難い」んだ?
>>818 それと同じような行が延々と長くソースを想像してみてください。
まあ、そのような単純なソースを書くのが趣味ならいいです。
プログラマなら、もっと向上心を持ってほしいものですが。
延々と長く ↓ 延々と続く
>>819 >>818 はi++をi = i + 1と書かないと気が済まないタイプの超初心者だろ
そっとしといてやれ
っつーかスルー汁
>>808 ソースの見た目の効率は悪いかもしれないけど、関数とかにするよりは
実際の効率(速度)は早い可能性もあるからなんとも言えない気が・・・
>>822 でもあまりにも長いと可視性という面で見た目の効率も落ちる可能性もあるからなんとも言えない気が・・・
>>823 まぁね、結局なにを求めるかで選択肢は色々だから・・・漏れはなら普通は可視性を選ぶ
>>819 お前、プログラミングは趣味だけにしとけよ。
>>821 VB6にi++なんて書き方はない。
828 :
デフォルトの名無しさん :2006/05/02(火) 15:39:53
と て も 良 い 香 り が す る ス レ で つ ね
>>826 のような文系のアフォプログラマがはびこる世の中になったのか・・・
まあ学生で勉強中の身だろうけど、糞コードをあまり公開しないでくれ。
切に願うよ。
>>826 おまえがプログラミングは趣味だけにしとけよ。
おまえみたいな糞コード書く奴はマジ邪魔だし勘弁してくれマジで。
>>826 チャソ
GWだから優しく教えてあげるけど、
プログラムは動けばいいってものではないからね。
プロ目指すんだったら、そこのところを本当に肝に銘じておいてね。
立派なプログラマになってください。
>>826 にマジレスしてる奴も同程度の池沼じゃねーか?
>>826 をよく嫁。
VB6
↑↑
++
↑↑
分かったら1年ぐらいロムってろ。
>>832 VB6
↑↑
++
↑↑
ってどういう意味?
835 :
826 :2006/05/02(火) 15:50:11
知るかよ!マジでwwww ゲバワロス!!1
836 :
sage :2006/05/02(火) 15:50:47
わかった!外部ファイルを使えばおk!
ん?誤爆か?乙。
(´・д・`) かぽーん
>>837 >>791 の質問に対するレスなんだけどね
変数に保持するよりも外部ファイルとかDBに保持したほうが
効率良いでしょ
そんなにすごい壮大なプログラムなのか?
>>840 何だかよく分からないが、72通りもあるらしいぞ。
すっげー!
a = iif(c,b,a) + 10
72店舗も支店があるのか、そら大きいな
俺は文系のパスタ職人でも読めるように書くぜ パフォーマンスがハードで補えるならためらわずそれを進める。 自分しか分からないコードは全部自分に跳ね返ってくる 左辺のaも変えたコードを他の人が分かるとは思えない。 お前の72回の苦労が他人の無駄な労力を軽減できる。
>>846 それは誰でもプログラマになれると言ってるようなもん。
>>846 >>818 のままのIf文が72回続くならそのまま書けばいいと思うよ。
けど、Ifの条件文が無茶苦茶複雑かもしれないし、
分岐後の計算式が数十行に及ぶ複雑な物かもしれない。
そんなのが72回続いてみろ、それこそパスタ職人にゃ読めんだろ。
それどころかそんなの書く奴がパスタ職人だろ。
それなら、
>>802 や
>>804 のように配列つかって左辺も変えたほうが
よっぽど読みやすいだろ。
>>827 の言うとおりケースバイケースなんだよ。
大昔のプログラマである漏れは、そのような話は目から鱗だ。 大昔はいかに複雑に凝縮してソースをコンパクトにするかが勝負だったから。
850 :
795 :2006/05/02(火) 19:07:33
正直、
>>791 が何をやりたいのかやっぱりよくわからない。
回答している連中も何を考えているのか。。。
たぶん、こういうこと(はっきりいってあんまり意味ないと思うけど…)
をやりたいんじゃないかと思って
>>795 のように書いたけど違うんだろうか?
851 :
795 :2006/05/02(火) 19:08:57
Private mA As Integer Private mB As Integer Private mC As Integer Private Enum eVariableID a = 0 b = 1 c = 2 End Enum Private Function ModifyMyMember(ID As eVariableID) Select Case ID Case eVariableID.a Call Modify(mA) Case eVariableID.b Call Modify(mB) Case eVariableID.c Call Modify(mC) End Select End Function Private Function Modify(ByRef Var As Integer) Var = Var + 10 End Function
>>851 それでも十分、僕の希望通りの動作をします。
大変ありがとうございました。
>>852 72通りってのは
>>791 のような条件分岐が必要な項目が、72個あるという意味だとしたら、
>>793 にあるように配列化して, cの値で配列を選択するようにしたらよくないっすか?
関数Modifyに対してcを (Boolean型ではなくIntegerなどで) 0か1で, ParamIDに72通りのうちの
どれなのかを指定すればいけそうだけど。
解釈が違ってたらすまん。でもいずれにしろ配列を巧く使うと条件分岐がいらなくなるもんだよ。
配列の初期化が必要だから、値がバラバラだと初期化がめんどくさくなることがあるけどね。
Option Explicit
Dim a(0 to 1, 0 to 71) As Integer
Private Function Modify(ByVal c As Integer, ByVal ParamID As Integer ) As Integer
a(c, ParamID) = a(c, ParamID) + 10 'もしインクリメントする値がバラバラならそれも配列にすればよい
'Modify = a(c, ParamID)
End Function
if c = false then a = a + 10 else b = b + 10 はい簡潔w
>>853 おっしゃる通りの内容で、既に配列化を完了させました。
今回のような配列の利用法は非常に勉強になるものでした。
まことにありがとうございました。
>>846 仕事で書くコードなら、それがデフォだね。
ちょっと前に、何処かのサイトの算数クイズの話があったけど、
質問者が一番最初に提示したのが、仕事なコードとしては最も正しい。
VBを覚えたばっかりの新人さんでも、ちゃんとメンテ出来る。
あの、房でごめんなさい。 課題でVBでオセロ作成ってのがでたんですが期限がやばめです 過去ログどのあたりにあるでしょうか
>>856 仕事で書くコードとやらは、
例えばスーパーマリオブラザーズみたいなプログラムを作る場合、
2 Player Gamesも作る必要があるので、
変数だけが違う全く同じコードを2回書くということ?
>>858 どこをどう読めばそんな質問になるんだ(w
>>859 仕事で書くコードは、
変数だけが違う全く同じコードを2回書いてる
>>791 のようなコードがデフォなんだろ?
>>858 あぁゴメン。ゲームプログラムの事は全く頭になかった。
ゲームだと、徹底的に最適化する必要があるのかもね。
一番重要なのは、「仕様通りに正しく動作する」事。 まぁ仕様にバグがあったらどうしようもないが。
ゲームプログラマ以外のプログラマには誰でもなれるというわけか・・・
865 :
デフォルトの名無しさん :2006/05/03(水) 00:50:29
仕事で書く場合は
>>791 でも微妙だろ
aとかbとか言う変数名を使ってる時点でダメ、ソースレビューで弾かれる
コードを書く前に勝敗が決まってるってだけだw
>>865 どう考えてもここで晒すコードの変数なんて、例えばの話だろw
>>868 仕事で使われてる奴らのレベルだとこういうサンプル出すとその通りに変数つけてくる馬鹿が居るんだよ
んなあほな
仕事で、他人が何年も前に書いたコードを メンテした事がない連中が多いなここは。 まぁ、そんな時が来る迄は、呑気にアルゴリズムだの 効率だのを考えてればいいよ。
なんか意味不明な愚痴だよな。 まあ「スパゲティコードをメンテする悲惨な自分」に自己陶酔する 稲川淳二系のメンタリティの人なのかな。 もっとも稲川淳二はあくまでネタでやっていたわけで、ベタに自己陶酔してる彼とは 全然違うけどね。 スパゲティコードのメンテ経験があろうと無かろうと、 アルゴリズムや可読性の高いコードを書くことの重要性に変わりはない。
>>873 愚痴を書くと書いたヤシは能力無しと決めつけるのか
仕事でコーディングする時は、自分が転職したり、リストラされた後、
まともな仕様書なんてない状態でそれをメンテする人の事も考えてね。
素直に
>>791 if c = false then
a = a + 10
else
b = b + 10
end if
(↑可読性が高いコード)
みたく書いてくれりゃいいのに、効率が悪いだの簡潔に短くだの
向上心を持てだの、勘違いしてろくでもないコード書かないでね。
残された人はホント、大迷惑だから。
ループしてるな。 まあ「策士策に溺れる」のは止めろって言いたいのはわかるしその通りだけど、 分岐してスイッチする対象の変数が多かった場合どうなの、 っていう791の言い分は正しいよ。 もっとも、モデリングが間違ってるからそんなコードを書かざるをえないんだ、 と想像するけどね。
あとのこと(メンテとか改造)を考えろってのも一理あるけど 納期と工数をふまえてってこともあるからやっぱ、端的にケースバイケースだな
>>877 もっと言わせてもらえば、理想で仕事なんか出来ないんだよ・・・
意味わからんな。 普通、「後のことを考える」こと、つまり可読性のあるコードを書くことと 生産性は矛盾しないよ。 矛盾しない、というより、可読性のあるコードを書くことは明らかに生産性に寄与するよ。
>>879 可読性もピンキリだし、それぞれの能力でも違いがあるから表現が難しいな。
でも、可読性のあるコードを書くことと生産性は矛盾することもある。
生産性の判断も人によるから・・・あぁ、また微妙な言い方しか書けない
つまり、皆好きな様に書けと。
882 :
デフォルトの名無しさん :2006/05/03(水) 13:00:58
オブジェクト指向をきちんと理解してる人が書いたコードって、そもそも仕様書なしに読めるようなものではない気がするが。
条件分枝なんかしなきゃいいのに
同期に、改行も空白行も空白も一切なしでコーディングしてた奴が居たな。 C言語なんだけど、「これが一番見易い」との事。
>>875 if c = false then
a = a + 10
else
b = b + 10
end if
↑
要するに、これをもっと複雑にしたやつが72通りあるんだろ?
それなら配列化したほうが可読性も上がるな。
配列化すると可読性が下がるとか言ってる奴は、
そもそも配列という概念すら知らないのにプログラマ気取ってるアフォなんだろ。
>>885 「これをもっと複雑にしたやつが72通りある」ってのは違うんじゃないの。
根本的に、「やりたい事」と「やる方法」の区別が出来てないだけかと。
>>887 まあそうかも知れんが、
「これをもっと複雑にしたやつが72通りある」と仮定した話として見てくれ。
if c = false then select case a(0) case 1 b(1) = b(1) - 10 case 2 a(1) = a(1) + 10 case 3 b(1) = b(1) - 30 case 4 a(1) = a(2) end select else select case b(0) case 1 a(1) = a(1) - 10 case 2 b(1) = b(1) + 10 case 3 a(1) = a(1) - 30 case 4 b(1) = b(2) end select end if こういう風なものが72通りある場合、 どう考えてもこれは可読性が低いだろ? cがfalseの場合とtrueの場合で、aとbが入れ替わってるだけ。 それならa(0)とb(0)をx(index)、a(1)とb(1)をy(index)、a(2)とb(2)をz(index)にして、 ソースをほぼ半分にしたほうが可読性も高くなる。
具体的には、 if c = false then index = 0 indexR = 1 else index = 1 indexR = 0 end if select case x(index) case 1 y(indexR) = y(indexR) - 10 case 2 y(index) = y(index) + 10 case 3 y(indexR) = y(indexR) - 30 case 4 y(index) = z(index) end select これだけで済む。
意味がわからんw
>>891 cの分岐によって変数が入れ替わってるだけの極端な例だ。
>>890 可読性は下がったとしか思えんが。
まぁ、所詮「可読性」なんて女性の好みと同じで、100%主観だしな。
なんかいかにもVbプログラマ的な発想の持ち主が多いなあ。 記述がのコンパクトさと可読性は、確かに一致することが多いけど いつも一致するとは限らない。 配列を使えば確かにコンパクトかつ可読性のあるコードが書ける場合があるのは確かだが、 例外なくそうだ、みたいに思い込むのはナイーブというか浅はか過ぎる。 条件によって選択される各変数が意味的に何の関連性もないとしたら、 そんな諸変数が配列になってるようなウンココードは俺は読みたくないね。
>>896 もちろん配列は関連性がある。
今回、仮に下のようなものと考えることとしよう。
元々は
a(0) = プレイヤー1のキャラクター
a(1) = プレイヤー1のHP
a(2) = プレイヤー1の最大HP
b(0) = プレイヤー2のキャラクター
b(1) = プレイヤー2のHP
b(2) = プレイヤー2の最大HP
配列化したあとは
x(0) = プレイヤー1のキャラクター
x(1) = プレイヤー2のキャラクター
y(0) = プレイヤー1のHP
y(1) = プレイヤー2のHP
z(0) = プレイヤー1の最大HP
z(1) = プレイヤー2の最大HP
まあ変数名はここでは適当だが、妥当なものに脳内変換すると、
配列に関連性があることがわかる。
あ、キャラクターってのはおかしいな。 「キャラクター」ってとこを「戦闘パターン」とでも読み替えてくれ。
あ、やっぱ「さいころの目」と読み替えてもらったほうが分かりやすいな。
イメージとしては、小学生の頃あまり流行ってなかったけど存在した、 ドラクエのキャラクター鉛筆のような簡単なゲームと考えてくれればいい。
901 :
デフォルトの名無しさん :2006/05/03(水) 14:46:27
やっぱりガキがゲーム作ってんのか
一体何度読み換えさせるんだ。w
もうこんな所で質問なんかせず、自分の好きに書けばいいじゃん。
>897 x,y,zなんて使わずにクラスにまとめろよ
>>905 何回言ったらわかるんだ?
極端な例を出しただけであって、そんな意見を述べる必要はないんだよ。
何がヒントだ 本当はクラスが使えないだけだろw
909 :
905 :2006/05/03(水) 16:12:08
>907 変数名が問題じゃ無いんだ 別々の変数で管理しているのが問題なんだよ
>>908 の頭の中
「俺はクラスという“高度な技術”が使えるんだぜ?すげーだろ?」
はいはいすごいね
911 :
905 :2006/05/03(水) 16:16:46
>910 俺、>908の言ってる事間違ってないと思うぞ >907はクラスを理解している反応じゃ無いだろう
ちなみに
>>907 は上で配列化のコードを書いてた奴とは別人だからな。
使えることが偉いのではなく 使えないやつに合わせるのが偉い。 つーか、こんなコード大して速度なんて変わらんて
VistaでもVB動く様にしてくれるみたいね。 VB.NETがあるのに。
みんな、なんでVB使ってるの? VC++使う気はないの?
オブジェクト指向プログラミングなんて何の自慢にもなりませんか?
919 :
905 :2006/05/03(水) 17:47:34
何か自慢になるの?
自慢しても意味はない。結果がすべて。ソースの中身なんかは関係ない。
オブジェクト指向でもスパゲティーでも、役に立つのが良いプログラムだ 笑福亭小平
マルチステートメントでスパゲティが最強だった時代が懐かしい。
納期にちゃんと間に合って、バグのないのが一番。
納期とか言ってるけど、VBを使った案件なんてないでしょ?
任天堂64
927 :
デフォルトの名無しさん :2006/05/03(水) 18:44:42
オブジェクト指向を正確に理解している人間は実は意外と少ない
だからチャンスなの?
VC++、VB、Java、 企業ではどの案件が多い?
>>928 魔法少女リリカルなのは 第13話「だからチャンスなの?」
バルス
>>924 VB指定って企業があるのよ(w
自社でメンテ出来るからって理由で(w
でも
>>925 はそういう企業をデフォと思ってるみたいよ?
Java > どとねと >>>>> VB >>>>> 越えられない壁 >>>>> VC って感じか?
一つだけ間違ってる 正しくはこう どとねと >>>>> VB >>>>> 越えられない壁 >>>>> VC>>>>>Java
.NETが出る前は、クライアント側は100%VBだろ。 VC++でDLLは作るけど。
99.999999999%
VC++とかデルファイとかで クライアント作ってた奴が居るのか・・・
>>941 指定なきゃDelphiだがなにか問題でも(w
うわああああwwwww びびったwwwww どんだけVB信者多いんだよwwww まさに厨だなwwwww ありえんwwwwwwwwwwwwwwwww VBがVCの足元にすら及ぶのか、冷静になって考えて見ろよwwwwwwwww
今日は若いお客さんが多いね。
>>943 そういう問題ではなくて、このスレにVC++が使えない(理解できない)奴が多いだけ。
だってここはVBスレだから。
VCが出来る奴がVBスレなんかにいるわけがない。
>>943 若いな。
昔からVB厨は悔しさのあまりVC++を目の敵にするもんだ。
そんなことも知らないとは若すぎ。
>>946 だなw
ある意味というか入門専用だしな。
>>938 誤爆?
クライアント側はVC++を希望するけど、
開発側が対応できないからVBを推奨して丸めこんでるが正解だろ。
>>940 の言葉を借りるなら99.999999999%がそう。
>>936 >>937 ネタにマジレスするが
おまえらも分かってる通り正しくはこう
VC>>>Java>>>>>>>>>>>どとねと>>>>超えられない壁>>>>VB
まあ、さすがVBスレだとは思うけど、 そのVB厨の巣であるこのスレに来てまで暴れる意味もわからん。
ぶっちゃけVBがしょぼいのは薄々気付いてたけどそこまでズバリ言われるとへこむ
未だに、「VBは入門用」だの「初心者向け」とか言ってる莫迦が居るとは・・・ まじレスすると、VBが簡単なのは、コントロールをフォームに貼る所迄、だよ。 それに、ここはVBスレなんだから、使わないなら来るなって。
>>953 >VBが簡単なのは、コントロールをフォームに貼る所迄、だよ
m9(^Д^)プギャー!!
>>953 おまえにとってはコントロールをフォームに貼るところ以降は難しいようだねw
自己紹介乙
>>953 ん?VBが上級者向けとでも?
VC++と比較して考えてみろよ。
VC++と比較してインタープリタであること以外のメリットを述べてみろ。
>>956 インタプリタであることもデメリットだろ
インタプリタね
VB6のDHTMLアプリってなんだったんだお
>>953 あまり関係ないけど
環境に依存しすぎなので、業務用にはあまりお薦めできない。
それに、VBは連続使用を保証してなかったと思うのだが・・・今は違うのか?
よって、主観だけどテスト開発とか練習用って位置づけなんだけど
> それに、VBは連続使用を保証してなかったと思うのだが・・・今は違うのか? それ以前に連続使用で問題があるという話を聞いたことが無いw
Visual Basicは入門専用言語だよ。Beginners’ All-purpose Symbolic Instruction Code まあ最近のは結構進化してて用途によっては実用にも耐えうるだろう。 でもよく考えてみろ。本当にVBという選択は正しいのか。
このスレにいるような雇われの身にそんなこと言ってもしゃあないだろ? 会社でVBで組めと言われたら従う以外の選択肢はないんだから。 なんでVBで組んでるかとかいうことまで考えたことのあるようなデジタル土方はいないよ。
All-purpose とは 万能の という意味だよ。
>>963 > このスレにいるような
お前もこのスレにいる
>>964 そりゃビギナー用途にしては万能なほうじゃね?
>>961 まあ問題は聞いたことはないかも知れないけど、未保証ってのが・・・
>>965 いるよ。
俺もデジタル土方だ。
仕方なく言われるままVBを使ってるんだ。
文句はあるまい。
つまり、初心者向けだが万能
>>967 当たり前に保証されていることを、わざわざ保証されているとは言わんのだが・・・。
それとも未保証ってどこかに書いてあった?
自社でメンテナンスをしようと思うような 浅はかで、貧乏で、初心者なクライアントが全て悪い。 まあVBで依頼して満足できなくても自業自得だからいいんじゃね?
>>968 自分で自分のことを言うのは文句ない。
ただ、自分がそうだからって、他人にもあてはめんなよw
>>972 じゃあおまえは誇りを持ち、好んで自らVBを使ってるとでも?
>>969 だが問題は、そんなに万能でもないということだ。
>>973 言語なんてどれでもいい。ただ過去の資産があるから使っているだけですが?
>>974 ヒント 名前が付けられた当時の時代背景
今の時代に名前の由来がどうとか言っても
的外れなだけだよ。
じゃあVC++にできなくてVBにできることを挙げてみてよ
VBのデメリット ・ランタイムが必要 ・遅い ・マルチプラットフォーム性は皆無 他にもいろいろデメリットはあるだろうけど、 この3点がある時点で使う意味はない。
じゃあ.NETなんて論外だな
>>977 イミディエイトウインドウから
作った関数をすぐに実行できること。
デバッグ中にブレークポイントで実行を停止し、
その場でコードを修正し、修正したコードで続きを実行できること。
デバッグに便利。
他の残念なデメリットを挙げると・・・ ・完全なオブジェクト指向ではない ・ポインタ型がない まあ唯一のメリットはインタプリタであることかな。 でもそれは開発テスト用途でのメリットであって、 実際に納品するものでは逆にデメリットになる。
?
>>980 それも開発テスト用途としてのメリットだな。
ポインタ型はあるほうがデメリット多いと思うが。 Javaもポインタ型無くて、VBと同じ参照だけだよ。
>>984 そりゃ、生産性の高さとしてのメリットをあげたんだからねぇ。
事実でしょ?
>>970 見つけられなかった、思い違いかも知れない
でも、たしかVBの欠点って使いはじめの最初のころに読んだか聞いたんだけどなぁ
まあ用途によるな。 クオリティより生産性を重視するならVBか。
クライアントである企業に納品するものなんて、 どうせ管理ソフトとか機関ソフトの類だろ? そんなのはVBでチャチャーっと作っちゃえばいいのよ。 エンドユーザ向けとか、パフォーマンス重視のソフトなら、 VBという選択肢はないけどな。
VBプログラマはスキルが低い奴が多い。 あとOOPが出来ない奴が多い。 ん?逆か? スキルが低いからVBプログラマなのか。
しかし世にはVBプログラマの絶対数が多い。 これはスキルの低いプログラマの絶対数が多いってことだ。
言語がどうのとか言ってるうちはレベルが低いというのが定説。 スキルの高い奴はどんな言語にでも柔軟に対応できるのが当たり前。
>>853 ですが、色々議論が進んだようで・・・
自分は業務pじゃなくてサンデーpですが、
>>791 ような場合、格納される個々の値の
管理を一括化でき、配列サイズの増加が可能で、なおかつコードがシンプルかつ
コンパクトになるというメリットがあると思って配列化しました。
あとは、コメント文で何故そういう風に書いたかという思想をちゃんと伝える必要は
感じますけど。
業務ではコメントって書かないもんなんですかね?コメント書くことを必須にしとけば
ずいぶん片付く問題に思えるんですが。考えが甘いっすか?まあプログラマもピンきりですしね。
ほら、また技術力がカーストになってると信じ込んでるやつの流れに
このスレは書き込みが多い=荒れている、だな。
言語で分けないと対立煽れないもんな
VC++マンセーの連中は、本当に阿呆ばっかりだな。 何で其処迄必死にVBを否定するんだ? 単なる適材適所だろ。 VBで作った方が良い物はVBで作ればいいし、VC++の方が 良ければVC++を使えばいいだけ。 勿論、Javaとかデルファイとかアセンブラとかも同じ事。 「VBのデメリット」だの「VC++には出来てVBには出来ない事」だの を列挙して何の意味があるんだ? 池沼なのか?
そもそも質問スレだし。スレ違いばっかだ
1000 :
791です。 :2006/05/03(水) 23:16:39
>>791 が華麗に1000Get!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。