[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/01 06:17 / Filesize : 260 KB / Number-of Response : 964
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VBプログラマ質問スレ(Ver.6.0 まで) part57



1 名前:デフォルトの名無しさん mailto:sage [2011/04/30(土) 01:50:27.76 ]
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。

855 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 09:23:27.25 ]
>>854
そのぐらいなら、まだ許せるんじゃね?

・2000行を超える超巨大関数。もちろんバグつき。
・無駄にテクニカル。
  CallByName、AddressOf、VarPtr、ActiveX、etc...
・何処でもやたらとDoEvents。
  DoEventsが無いと長時間応答なし、でもあると落ちるみたいなバグつき。
・何処でもやたらと状態遷移で管理。でも状態遷移図はコーダの頭の中だけ。


856 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 22:12:39.72 ]
>>855
2000行を超えて無駄にテクニカルってのが笑えるw

>>854
わざとやってる臭いね

857 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 00:31:59.07 ]
>>854
どっからどうみても俺が今やってるプロジェクトのソースだが

858 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 01:18:54.82 ]
今VB6でやってるのかよw
どんな会社だよ。
ついでにそんな会社にいるあんたのレベルも知れてるな

859 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:15:29.69 ]
新規はさすがにないだろうが、既存システムの修正はまだあるだろ

860 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 03:26:43.23 ]
VB6で新規もありうるんじゃね
今もVB6のソフト使ってるなら
そのパソコン(?)で新たに何かしようとその会社が考えてたら
そのパソコンで稼動するソフト制作を要求するんじゃねの

861 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 09:30:04.25 ]
VB6はMSのサポートが終わってるという建前で小さい新規の開発はお断りしています

862 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 17:50:08.15 ]
リプレースがあってもVB6の糞コードを
アップグレードウィザードで.netに引き継いでやってたりするから怖い

863 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 01:29:31.71 ]
なんだかんだVB6ってよく出来てたと思うんだよなー。
.NETはC#だけにしてVBはVB6の延長で進化すればよかったのに。
微妙にC#に出来てVB.NETに出来ないことがあって面倒だ。




864 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 01:48:11.61 ]
どんな言語でも最初は簡単でも後から難しくなるもんだw

865 名前:デフォルトの名無しさん [2011/12/26(月) 00:49:07.79 ]
汎用に使えるプロシージャだと、先頭に機能だけ一言書いて
わざとインデントなくしてコメントも削除して納品することがある
流用されないようにというケチな気持ち

866 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 01:11:20.72 ]
ねえよカス

867 名前:デフォルトの名無しさん mailto:sage [2011/12/26(月) 05:19:47.49 ]
そもそもソース提供してる段階で流用を認めないとかあり得ないと思うが

868 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:23:44.95 ]
ちょこっとしたソフトでも、開発に2人月かけたとして
納めた会社が大量にコピーして使ったりしてるのを見ると
どうかと思う。もっと金とるかライセンス契約にするか。

ま、そういう会社はOFFICE製品とかも海賊版使いまくってたり
するんだけど。

869 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:42:35.68 ]
もしドラブラよろかよ

870 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 18:51:37.21 ]
もしドラえもんにあったら その時は ブラジャーによろしく

871 名前:デフォルトの名無しさん mailto:sage [2011/12/27(火) 19:53:10.25 ]
今なら「もしドラブラよろ」でググれば出てくるな

872 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 00:44:02.15 ]
もしドラゴンクエストでブライがよろいを着たら?

873 名前:デフォルトの名無しさん mailto:sage [2011/12/28(水) 04:05:53.56 ]
もしもし、ドラ焼き100人前ブラックでお願いします よーそろー?



874 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 01:42:07.29 ]
もしドラ×ブラよろかよレベル高ぇーなオイ

875 名前:デフォルトの名無しさん [2012/01/02(月) 14:47:56.67 ]
ゴミのような奴しかいないスレになってるな

876 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:47:31.01 ]
そんなに謙遜するなよ

877 名前:デフォルトの名無しさん [2012/01/06(金) 23:34:52.86 ]
初めて書き込みます。

現在、VB6.0でプログラミング機能付きのRPN電卓を作るという課題に取り組んでいます。

電卓機能についてはある程度できたのですが、プログラミング機能の方が全く分かりません。

どこが分からないかというか・・・どのように動いているのかイマイチ理解できていません。

解説していただけたら助かります。

878 名前:デフォルトの名無しさん mailto:sage [2012/01/06(金) 23:57:22.55 ]
Scriptlet

879 名前:デフォルトの名無しさん [2012/01/07(土) 00:11:57.42 ]
877です。

これを元に作ります。

kie.nu/3mI

880 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 05:22:37.64 ]
いきなり上げられたexeをクリックする勇気は無いな

881 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 05:59:33.44 ]
学校って進歩とか進化ってしないの?
いつまでVB使うの?

882 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 10:44:43.23 ]
センセイがくたばるまでだよ?

883 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 11:43:17.04 ]
実務ならまだしも、学校とかは別にVBでもいいじゃん
VBだとコーディングスキルはさほど身につかないだろうけど
手軽にプログラムを作る楽しみを実感できる

いきなり敷居の高い高等言語を強制して
何も形にならずに「プログラミングってつまんねー」ってなるよりは
下等でも手軽な言語で簡単なものを色々作り
思い通りのプログラム・アプリケーションを作ることの楽しさをまず知ってもらい
高等言語に移るのは下等な言語に自分で限界を感じるくらいのスキルが身についてからで十分



884 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 11:51:44.95 ]
学校が何の学校かによる。

話の流れからすると、ごく普通の高校レベルを
想定しているようだが、その程度の学校で
プログラミングに何を求めるかだ

885 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 14:34:46.66 ]
>>883
高等の使い方間違ってね?

886 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 15:13:08.69 ]
某県立工業高校情報コースだった10年ほど前、PC-98のMS-DOSから動かすたーぼしーでCの実習したの思い出した

887 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 17:48:58.16 ]
>>881
実を言うと、参照が無くなったら即座に解放するというガベコレ方式のお陰で、
常時動作させる(例えば自動情報収集系)ようなソフトを手軽に作るには
VB6は便利。

.NETとかJavaで同じような事をしようとすると、気軽にインスタンス生成するのが
難しくなる。考えて作らないと。

あと、VB6で作ったクラスはExcelでも「ほぼ」そのまま使えるという利点がある。
.NET以降は、オブジェクト指向の理解が必要なので、学校ならカリキュラム的に
長くなると思う。

個人的には、初心者にはまずCをやらせたい。学校ならやってるとは思うが。
ここは進化しなくて良いよ。

888 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 17:54:47.30 ]
>>887
ちょっと何言ってるのか(w

それって普通は逆で、循環参照の問題がクリアされてないVB6の方が普通は注意を要する。
ドトネトやジャヴァにはその心配がない。

889 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 18:56:28.67 ]
>>888
循環参照は気をつけてたら良いよ。
簡単にメモリリークで落ちるよね。
その「気をつける」ってのが、そんなに考えなくても可能。

.NETとかJVMは、ある程度溜まってからガベコレするので
ソフトがひどい時は数秒止まるでしょ。
常時自動で情報収集するとか、FA用途とかみたいに
絶対に停止させたくないものだと、数秒止まるとか致命傷になる。



890 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:19:03.42 ]
>>889
VB6に固執してる人ってすぐそれだけど、そんな事実はないよ。
N88-BASICの時代じゃあるまいしそんな間抜けなことするわけないでしょw

っていうか、それを言うならシングルスレッドのVB6の方が余程リアルタイム性の
要求される処理に向いてない。
話にならん。もうアホかと。

891 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 19:58:55.81 ]
>>890
俺は.NETでもリアルタイム性の要求のあるモノ作るけど、
何も考えずにJavaのwebアプリ作るのと同じ要領で
ValueObjectの類をどんどんnewするような設計にはしない。
これをやってると、ガベコレによる停止時間がひどくなるから。
ValueObjectをどんどんNewしない設計については大まかに分けて2つの方法がある。
意図的なGCを利用できるというのは前提でな。
www.atmarkit.co.jp/fdotnet/directxworld/directxworld06/directxworld06_01.html
一応このへん参考。

VB6で作る場合は、循環参照だけ避けてれば後は楽。
VB6で作るわけだから、そんなに手の込んだものにはしないわけで、
シングルスレッドでもそんなに問題にはならない。

892 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 20:12:36.09 ]
循環参照って
Dim a New Class1, b New Class1
Set a.value = b
Set b.value = a
みたいな感じのこと?

893 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 20:37:43.69 ]
まあそんな感じだけど。

>>887の彼の発言が奇妙なのは、俺はVBランタイムのメモリ管理に詳しいわけじゃないが、
どのような方法にしろ自動管理である以上断片化は避けられないはずで、
であれば.NETのガベコレの(括弧つきの)「問題」と同じ問題を抱えているはずだと思うけど。

まあガベコレで数秒処理が止まるとか言ってる時点であれだけど



894 名前:デフォルトの名無しさん mailto:sage [2012/01/07(土) 20:49:24.63 ]
レガシーな人なんだろ
負の遺産だけど

895 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 01:05:36.32 ]
VB6ランタイムのGCは参照カウント方式で、
カウント数が0になったら領域解放。

.NETとかJavaはバーチャルマシンがGCを担当。
マークアンドスイープとかコピーイングの方法の複合に加えて
古い・新しい領域せ世代別にも管理。

ここで、古い領域のGCがFullGCと呼ばれるもので、>>891の説明している
「数秒止まる」だろうと思う。
ヒープの断片化が問題なわけじゃなくて、ある時一気に
@生存オブジェクトのマーキングAマークなしオブジェクトの除去、
Bヒープの再配置 という流れでGCを行うので、GC自体がかなりの処理
で重たかった。ヒープの再配置を行うので、どうしてもアプリケーションの
停止時間が発生する。昔のJavaのwebアプリだと、数秒どころか数分無応
答という事があった。www.atmarkit.co.jp/fjava/rensai2/webopt06/webopt06.html
企業の基幹システムだと搭載メモリ量も多く、いったんFullGCがはじまると
手が付けられなかった。チューニングで対応したり、夜中に再起動させたり。

俺は.NETには詳しくないんでJavaで解釈するけど、今のJavaはさらに別
のGC方法があって、VMの起動オプションで指定するんだけど、GCの流れ
が@→A→@→Bみたいになる。アプリケーションを停止するのは@だけ
で、AやBの時はアプリケーションと並列処理される。
だから、以前ほど「数秒止まる」というのは体感しにくくなっている。
かといっても、この方法も万全じゃないんで、上の古い方法と組み合わせ
で使う。だから結局、無応答時間を完全に回避できないんだけどね。

.NETも、IDE使ってると時々プチフリみたいな事が起こって、会社の先輩か
らは、これが.NETのGCって説明されたけど、本当かどうかは知らない。
ただ、プチフリ程度でも、問題になる領域のソフトはあると思うけど。

GCについては詳しく知ろうと思ったら余裕で本一冊になる。売ってる。


896 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 03:25:46.11 ]
>>883
VB6ってどちらかと言えば
>敷居の高い高等言語
の方に入らないか?まあ、確かに電電の方とかC言語よりアセンブリの方がより直接的で分かりやすいって人も居たが。

今のC#のすべての機能(linq/ラムダ式、型推論)を使いこなすのは難しいかもしれないけど
VB6でやる程度のことなら、C#/VB.netとかの方が遙かに楽に出来ると思う。
それに、オブジェクト指向の説明だって、継承とかその辺の仕組みとかについての説明は難解かもしれないが
すでにあるクラスやメソッドを使う分にはむしろ楽になるだけだろ。 少なくても、今扱ってる変数・値が数値か文字列かはっきりしない言語よりは分かりやすいかと。
GCの事に関しても、それに気を遣わなければならないレベルの事なら、他の言語を検討しても良いわけだし、明示的にコントロールしても良いわけだし。

そもそも、VB6ってExcelのマクロを組むためだけの言語だろ?教育目的で使うなと思うんだが。
RADツールが使える環境なんて.net系以外でもDelphiとかいろいろあるわけで、わざわざVB6を選択する必要は無いし。

897 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 03:49:13.22 ]
学校側がVB6使いたがるのはVBScriptやExcelのVBAに応用しやすいからという理由からじゃね

898 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 20:35:16.36 ]
>>896
VB6を糞にしてるのはVariant型だよな。

899 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 21:11:47.82 ]
Variantは使わなければいいだけの話じゃないのかな

900 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:41:21.77 ]
よくある事だが、VB6で作られたソフトで、標準モジュールもクラスモジュールも無いという事はよくある。
関数への切り出しすらなく、イベントプロシージャに全部長々と書いてあったり。
変数もVariantバリバリ。

初心者がwindowsアプリを作るにはVB6がやさしいのな。

901 名前:デフォルトの名無しさん mailto:sage [2012/01/08(日) 23:46:08.75 ]
>>900
それはVBに限らない

902 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 00:10:36.22 ]
>変数もVariantバリバリ。
おまえコレが言いたかっただけだろ

903 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 00:56:35.72 ]
>>901
CやJavaでwindowsアプリ作るのはしんどいぞ。



904 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 03:35:02.26 ]
まあVBAに転化しやすいてのは小規模アプリとしては大きなアドバンテージ
今後ExcelやAccessが消えるとは思えないしねぇ

905 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 14:01:44.01 ]
>>896
>そもそも、VB6ってExcelのマクロを組むためだけの言語だろ?
VBAの間違いだよな?


906 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 15:07:25.69 ]
とりあえず、Joel on Softwareの「はじめてのBillGレビューのこと」
でも読んでからVariantに呪いでもかけてみるといいよ

907 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 15:13:24.45 ]
動的型付け言語って全部Variantだけどなw

908 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 16:53:37.31 ]
>>905
もちろんVB6系全般だよ。むしろ、それ以外で使い道あるか? 
VB6は特にofficeのCOMを操作するために特化した言語・環境だろ。それ以外の用途なら他にいくらでもマシな選択肢はあるし


909 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 17:15:03.51 ]
>>908
理由、理由w

910 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 19:32:45.32 ]
>>908
COM操作に特化したってのはまあ同意できる面もなくはないが
VB6はべつにofficeに特化してるわけではない

VBAはVBのサブセット的な位置づけで、VBAが実質officeの操作に特化してるというなら
同意できる面もなくはない

とりあえずお前がVBとVBAの区別ができてないのが良くわかった

911 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 20:06:07.35 ]
VB5CCEの話とごっちゃになってそう

912 名前:デフォルトの名無しさん [2012/01/09(月) 20:43:37.75 ]
初心者ですが、Visual Basicを始めるにあたって周りに教えてくれる方がいません
簡単な物理計算をして、それを表示できるだけでいいのですがお勧めの指導書などありますか?

913 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 21:17:08.01 ]
答え : いまの時点でVBを0から始める馬鹿はいない



914 名前:デフォルトの名無しさん [2012/01/09(月) 21:20:21.49 ]
>>913
すいません、始めなければならないんです
0からでも

915 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 21:22:13.19 ]
>>914
現在入手可能な、お勧めの指導書はありません。
0からオンラインヘルプを頼りに始めるのが良いと思います。

916 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 21:22:50.93 ]
まあ落ち着け

VBとVB.netは別物だぞ
まずこれを理解してないと会話が成り立たない

917 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 21:28:54.17 ]
単純な計算と表示だったら他のBASICの入門サイトなどで代用できるよ
N88互換のBASICも生きてるものがあるだろうし、そっちから攻めるといいんじゃないかな

918 名前:デフォルトの名無しさん [2012/01/09(月) 21:29:07.72 ]
>>915
そうなんですか?オンラインヘルプか...
>>916
自分が使っているのはVisual Basic2010express editionなのでVB.netとはちがいますよね?;

919 名前:デフォルトの名無しさん mailto:sage [2012/01/09(月) 21:32:41.26 ]
せつこ、それどっとねっとや

920 名前:デフォルトの名無しさん [2012/01/09(月) 21:35:03.64 ]
>>919
え、そうなんですか?
なんということでしょう...

921 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 01:47:17.97 ]
>>910
VB6とVBAの違いっていっても大してねーじゃん。平等に(ry

僕が言いたいのはVB6自体、COMを扱う、つまり主にofficeを扱うために作られたような言語でしょ?
そりゃ、それ以外の用途にも使えるかもしれないよ?でも向いている訳じゃないだろ。
VB6はVBAと違ってGDIを直接触らなくてもグラフィックを描画出来るかもしれないが、それもおまけみたいなものだし。

922 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 02:01:34.36 ]
>>921
えとさ、COMってOfficeの事じゃないよ
1から勉強しなおしたほうがいいんじゃない?

923 名前:デフォルトの名無しさん [2012/01/10(火) 02:48:07.37 ]
一口にVBって言っても色々あるようですね
少し書店などで立ち読みしただけでは初心者には組めそうにないと思ったので...
やはり大学の授業や講座などを受けるべきなんでしょうか



924 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 03:24:27.84 ]
>>922
揚げ足とりすぎ
COMとofficeは表裏一体だろ。もちろんoffice意外に使えないわけじゃないけどさ、使わないだろ?それ以外だとIE周りとか?
COMはofficeとVBのための技術といっても過言じゃないし、VBはCOMを扱うための言語、
ならVBはofficeのための言語って言っても差し支えねーじゃん。VB6、COM、Officeこいつらは三つ子の兄弟だよ。

>>923
何をしたいかによる。大学っていっても情報専門の学科以外での授業なんて、中学生の部活でちょっとやる程度のことしかしないよ。
新しくVB6を始めるのはあり得ないが、VB.netなら特に苦も無く学べるんじゃない?
全く経験が無いならC#の方が取っつきやすいとは思う。どっちもほとんど同じものだからどっち選んでも良いけど。

とりあえずここはVB6スレであってVB.netはスレ違だ

925 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 03:33:55.59 ]
Officeのための言語ならここまで広まらなかっただろうな

926 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 03:37:49.57 ]
>>924
だからさ、Windowsのあらゆる部分にCOMは使われてるの。
マルチメディア関係、サウンド、動画、もほとんど
COMだぞ。

927 名前:デフォルトの名無しさん [2012/01/10(火) 03:51:52.39 ]
>>924
なるほど...
聞いた感じかなり難しそうですね
CもVBもあまりかわらないものなんですか?


928 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 04:34:58.35 ]
>>924
揚げ足でも何でもなくて本当にお前の理解不足だから
そのていどの理解力でCOMがどうこう言うのはやめれ

929 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 13:10:03.82 ]
>>926
そうらしいね
レジストリのクラスIDとして登録されてるのがCOM?

930 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 13:20:37.77 ]
DirectXもCOMだよ

931 名前:デフォルトの名無しさん mailto:sage [2012/01/10(火) 14:38:22.59 ]
>>927
CとVBは全く別だよ。C#とVB.netは同じ.netだから、同じように扱えるし、書き方もにてるから
C#の知識がないVB.netの人でもC#のコードが読めるし、逆も読めるよ。
blogs.wankuma.com/jeanne/archive/2007/02/26/64122.aspx このあたりにまとめてある

そしてC言語とC#、VB6とVB.netはまるで別だよ。 もうすこし調べたり考えたりしてから書いた方が良い。
要は「英語と中国語では文法(ゴジュン?)が似てる」っていうのを「ラテン語と韓国語はあまりかわらないものなんですか?」って返してるようなもの
それにスレ違だって。

932 名前:デフォルトの名無しさん mailto:sage [2012/01/11(水) 03:43:44.63 ]
COMはwindowsの中核を成す技術仕様だぞえ
officeはそれに準拠してるというだけだよ
それにCOM自体はUNIXなんかにも実装されとる
個人法人問わず自作のCOMコンポーネントが大量に配布されてるじゃん
officeとVBだけってんじゃあ勿体無さすぎだなぁ

>>927
VBでって事はwindowsは確定だとして、簡単な物理計算と表示だけで良いのなら
Excelに関数かマクロ突っ込むだけで事足りるんじゃなかろうか?

933 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 18:15:32.51 ]
コンピュータ動かすんやからCもVBも.NETもJavaも全部ほとんど一緒やろ!
似たようなもんやで〜〜
全部IFとかFORとかそんなんやん!!どや?




934 名前:デフォルトの名無しさん mailto:sage [2012/01/12(木) 18:18:56.80 ]
Javaにforってあるん?

935 名前:デフォルトの名無しさん [2012/01/13(金) 00:34:01.99 ]
すみません、VB上でWin32APIのSleepを使って、現在のスレッドを
1000ms(1秒)一時停止させる処理を入れたいのですが、その際、
下記のようなソースの場合、DoEventsが実行されるタイミングは、
Sleep 1000でスレッドが停止して1秒たち、再度一時停止していた
スレッドが再開した後でしょうか?

それとも、Sleep 1000で1秒間分のスレッド一時停止が開始された
直後にDoEventsが実行されるのでしょうか?

やりたいことは、Sleep 1000でストップしている間に、他のスレッド
で発生してたまったWindowsメッセージを処理させたいと思っています。

---以下ソースの一部---

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
  Sleep 1000
  DoEvents
End Sub


936 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 01:10:41.27 ]
>>935
「それとも」って接続詞の使い方間違ってない?
どっちも同じ意味にしか聞こえんけど....


937 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 01:22:59.63 ]
ああ、>>935の意味がやっと分かったw
要するに>>935はスレッドが何か全然分かってないんだね。

コード(当然DoEventsを含む)が実行されるということは、そのスレッドが
制御を持ってる(ブロックされてない)ということ。

〜が実行されるのは眠った後ですか?なんて質問は愚問過ぎ。
実行されない状態を作るのがSleepなんだよw

938 名前:935 [2012/01/13(金) 01:23:04.80 ]
>>936
わかりにくくてすみません。。

Sleepで一時停止中か、一時停止しスレッドが開始した後か
という意味です。

939 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 01:25:11.09 ]
停止中はどのような命令も実行されないわけですが

940 名前:935 [2012/01/13(金) 01:25:28.49 ]
>>937
ありがとうございます
やはり、Sleepが実行されて、そのスレッドが止まると、
当然次の処理であるDoEventsも停止中は、実行されない
と言うことですね。

であれば、DoEventsするスレッドを別に立てるしかないという
ことでしょうか?

941 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 01:32:12.87 ]
>>940
いやまず最終的に何がしたいのか書かないと何とも言えんと思うけど....

「(重い)処理」を別スレッドでやるのなら普通はDoEventsなんて必用ないですよ。
DoEventsは、UIスレッドで(ビジーループ的な)重い処理を実行しても
UIが無反応になることを避けたい場合だけに使うんですよ。

942 名前:935 [2012/01/13(金) 01:50:55.91 ]
>>941
説明不足ですみません。

>>935は一例としてあげたソースになります、実際には、、

UI(Form)に配置したTextBoxに時計表示を出して、それを1秒ごとに更新して
表示させたいのですが、同時に3秒ごとに別の処理の繰り返しをしたいと思っています。
その際、3秒待つのに単純にSleep 3000という行を追加すると、UIの時計更新が止まって
しまうので、3秒待っている間でもForm上の時計表示は動かしたままにしておきたいと
思い質問しました。

ちなみに、UIスレッドとは、Formのソース内に書かれているプロシージャ群の
処理が実行されるスレッドということでしょうか?

943 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 05:47:47.09 ]
x秒ごとに処理したいのにスレッドを止める必要ないでしょ
だいたい処理が瞬間に終わるわけでもあるまいし。
インターバルを設定できるTimerってのがあるんだけど



944 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 07:19:27.57 ]
VB6でマルチスレッドってActiveXを使うやり方?

945 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 08:53:01.02 ]
できた

Private cnt As Integer

Private Sub Form_Load()
  cnt = 0
  Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()

  cnt = cnt + 1
  Label1.Caption = cnt
  
  If cnt Mod 3 = 0 Then
    Shell "notepad" '重い処理
  End If

End Sub


946 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 09:21:22.64 ]
VBは1つのスレッドで、DoEventsによって並列処理を
しているように見せているだけ。
Sleepしたらそのスレッドは止まるのだから、VBプログラムの全てが止まる。
DoEventsでそういうことをやっているとデッドロックしやすい。
DoEventsをSwitchToThreadを同じようなものだと思っていると痛い目を見る。
非同期処理したいのであれば、Timerを使うべき。

947 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 09:38:57.77 ]
マルチスレッドがやりたいならvb.netを使ったほうがいいよ
vb6でやるならマルチプロセスでやったほうがいいな

948 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 14:16:45.68 ]
ActiveXExeのスレッドでマルチスレッドをやってみたことはある。

非同期で処理しようと思ったら、結局別スレッドで作成した
FormにTimerをおいて、そこから処理をスタートさせなければならない。

メソッドやプロパティはオブジェクト側のスレッドで同期して実行されるので
別スレッドのオブジェクトを呼び出しまくると、全然並列処理にならないw

949 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 18:56:07.60 ]
>>934
あるよ。
FOR EACH的なものまである。

>>933
制御文レベルだとどれも似たようなもん。
しかし、それをもってほとんど一緒というお前はまだまだ素人。

950 名前:デフォルトの名無しさん mailto:sage [2012/01/13(金) 19:08:54.62 ]
>>942
Sleep 3000 は、3秒間何も出来ません、の意味。
やるんなら

Private Sub Timer1_Timer() 'インターバルを1000にしておく
  Static cnt As long
  
  If cnt = 0 Then
    'ここに3秒ごとの処理を入れる
  End If
  
  Text1.Text = Format(DateTime.Now(),"yyyy/mm/dd hh:nn:ss")
  
  cnt = cnt + 1
  If 3 <= cnt Then
    cnt = 0
  End If
End Sub


>>945
それだとcntが32768でオーバーフローになる

951 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:29:09.18 ]
VisualBasicEditor(VB6 や OfficeVBA のエディタ部分)の
初期フォントの決定ルールを教えて欲しいです。分かる方、いますでしょうか。
日本語環境なら、MS ゴシック、英語環境ならCourier Newのようです。

オプションダイアログからフォント設定を変更した後ならレジストリに記録されてましたが、
インストール後からフォント変更するまでは、レジストリには項目がありませんでした。

知りたい理由は、VisualBasicEditor上に同じフォントで文字を描画したいからです。
同じフォントで描画ができればいいので、稼働中のVisualBasicEditorのフォント名などの情報や
HFONT、LOGFONTなどを取得する方法がありましたら、そちらの方が適切に思うのですが、
VBEウィンドウに対してGetDC、GetWindowDCした後、GetTextFaceなどでは駄目でした。

初期フォントや稼働中フォントの取得方法が分かる方、どうぞよろしくお願いします。

952 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 16:58:49.24 ]
ここってやっぱりVB.NET扱ってませんよね(´・ω・`)?

953 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 18:48:29.76 ]
>>952
扱ってたら>>1に「VB〜6.0の」なんて書いてありませんよね。日本語理解できてますか(´・ω・`)?



954 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:18:03.31 ]
>>953
いるよねぇ。こういう一言多いやつ

955 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 19:34:06.91 ]
やっぱり扱ってませんでしたか
お騒がせしました(´・ω・`)

956 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 20:21:19.59 ]
>>955
もう見てないと思うが、.netはここ

VB.NET質問スレ(Part38)
toro.2ch.net/test/read.cgi/tech/1325083428/

957 名前:デフォルトの名無しさん [2012/01/27(金) 04:15:41.25 ]
>>951
VBインストール直後はフォント情報がレジストリにないということは
レジストリ読んでみて、登録されてなかったら、そのデフォルトフォントにすればいいのでは?

レジストリ読むAPIはAPIビューアの定義は間違いだらけだから気をつけて
あれってVB5の時から間違ったままだから、初心者に諦めさせるように故意に間違えてるんだろか

958 名前:デフォルトの名無しさん mailto:sage [2012/01/27(金) 09:32:31.10 ]
APIの引数はByVal As Longで宣言して
StrPtrとVarPtrで渡す時代

959 名前:デフォルトの名無しさん mailto:sage [2012/01/28(土) 00:24:21.02 ]
>>957
レス感謝です。もうレスは無いかと半ば諦めてました。

今のところ、まずはレジストリから取得するようにしています。
デフォルトフォントはOSの言語で決まるようだったので、できれば決め打ちではなく、
VB6と同じような何らかの決定ルールに従いたいと思ってました。
(英語版VB6を日本語版WinXPで試したところ、MS ゴシックがデフォルトフォントになりました)

詳細は読めなかったのですが、中国のサイトでソフトが紹介されているのを見つけたので、
少数ながら、海外にもユーザーがいるみたいなので、それもフォントを決め打ちにしたくない理由の1つです。

色々試してみて、どうやらレジストリから取得しているわけではなさそうなのですが…。

960 名前:デフォルトの名無しさん [2012/01/28(土) 08:35:49.31 ]
そうねぇ、外国のOSならMSゴシックはないよねぇ
とするとWindowsのどこかに・・

フォント名が定義されてるレジストリは余りないようだけど
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
あたりはどうでしょ
こんなのを別のフォント名に変えてVBを新規インストールしてみて
その変えたフォントになるかどうか
ま、人に配布するソフトはそんな推測で作っちゃいけないよね

961 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 21:50:30.26 ]
>>960
VB6新規インストールは行っていないものの、
レジストリ上の"MS ゴシック"、"MS Gothic"、"msgothic.ttc"を
別のものに変えて試してみたのですが空振りでした。

色々試してみたところ、VB6については、OSの言語に依存しているのではなく、
[コントロールパネル]-[地域と言語のオプション]-[詳細設定]-[Unicode 対応でないプログラムの言語]
の設定に依存していることが分かりました。
また、この項目で「中国語(香港)、(マカオ)、(シンガポール)」を選択すると、
VBEで使用するフォントが必要な状況になるとVB6が強制終了してしまうことが分かりました。
内部でベタで持ってるのかもしれませんね…。

とりあえず、レジストリから取得、取得できない場合はベタ書きにしようと思います。

962 名前:デフォルトの名無しさん mailto:sage [2012/01/30(月) 23:31:01.21 ]
961に誤りがあったので、誰かが変に参考にしないように訂正を。

[Unicode 対応でないプログラムの言語]の設定を
「中国語(香港)、(マカオ)、(シンガポール)」にするとVB6が強制終了すると書きましたが
それは英語版VB6の話で、日本語版VB6の場合は問題ありませんでした。

963 名前:デフォルトの名無しさん mailto:sage [2012/01/31(火) 21:47:40.78 ]
会社で仕事関係の一切の情報持ち出し、持込禁止になってから止めてたんだけど、PCにVB6インストールしようかなあ。
久しぶりに触りたくなってきた。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<260KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef