VBプログラマ質問スレ(Ver.6.0 まで) part58
建国記念の日特番「天皇とは何か?」東浩紀×猪瀬直樹
http://live.nicovideo.jp/watch/lv80888861 【会場のご案内】
2012/02/11(土) 開場:19:50 開演:20:00
「建国記念の日」とは、
建国をしのび、国を愛する心を養う「国民の祝日」。
この日はかつて、
『日本書紀』が伝える初代天皇である
神武天皇即位の日とされた「紀元節」という祝日でした。
戦後、紀元節は廃止されるも、
1966(昭和41)年には国民の祝日として復活しました。
憲法では、
日本国と日本国民統合の「象徴」と規定されている「天皇」。
その地位は、主権者たる日本国民の総意に基づき、
国政に関する権能を全く有さないはずの「象徴天皇制」。
しかし、天皇をめぐる状況は、
日本人のアイデンティティーの探求とも絡み合い、
常に政治、社会、文化的な争点であり続けています。
そこで、ニコニコ生放送では、この建国記念の日に
あらためて、天皇とは何かを考えます。
出演は、東京都副知事の猪瀬直樹氏と、
批評家・作家、『思想地図β』編集長の東浩紀氏。
司会進行は週刊朝日の山口一臣氏です。
ダックタイピングが可能ってマジで?
久々にVB6案件に入った。 VB6については思い出もある。A君。 新人の当時、研修が終わってA君と私はVB6の案件チームに入った。 A君は間違いなく優秀で、私よりもどんどんVB6の技術を吸収していった。 私はVB6にあまり馴染めなかった、というよりも、A君ほどに伸びない プレッシャーもあってか、次からはVB6のチームからは外してもらった。 A君をVB6のチームが手放すわけもなく、A君はそこで6年過ごした。 A君はエース格にもなっていったが、VB6の案件もほとんど無くなり、 VB6を扱っていない営業所に勤務となった。その営業所はJava案件中心。 VB6チームではエース格だったにも関わらず、Javaでは苦戦を強いられた。 まず、VB6をずっとやってきていたので、本格的なオブジェクト指向プログラミング の技術が無い。デザインパターンもわからない。だから詳細設計でも 効率的なモデリングができない。 A君はその営業所で「6年やってこれかよ」というレッテルを貼られた。 しばらくA君は頑張ってはみたものの、チーム内の嫌な視線が続き、 ついには退職した。 A君は間違いなく頭脳明晰だったが、VB6を6年もやるのは問題があったと思う。 私は幸運だったかもしれない。しかしこうしてGAEだのandroidだのが隆盛の時期に、 VB6案件に戻るのは不安もある。 今の時代、転職しようにも、VB6だとキャリアに疑問を持たれるかもしれないし。
ポエマーきもっ
ポエムというよりモノローグ。 俺も人の心配してられない。
かつてのコボラーも業界を去っていった人多いよ。 でもCOBOLは世界で最も多いって言われるほど仕事あったけどね。
本当は本人がA君のような事態に陥ったんだろ でもその原因は、VB6を6年やったからではなく、本人が 「勉強できるけど頭が良いわけではない」「偏差値高いけどIQは低い」 というタイプだったことだろう こういうタイプは皆が0スタートで一つのことに専念する場合は 周りより優秀な結果を出すことが多いが、いきなり環境を変えられると 今まで培ったことを応用の糧にするのではなく、切替えの弊害にしてしまい 更に変にプライド高いから、Java分野では先輩だけど言語経験年数では 後輩って奴に横柄な態度取ったりして、人間関係でも上手くいかなかったり することが多い ま、ご愁傷様ってことで
>>9 昔、某大手企業の中に出向してCOBOL触ってた事あったけど
サブルーチン化もあまりされてないし、制御文だけで延々と
ロジック組んであるのな。しかもGOTOが山ほどある。
二度と触りたくねえ…
>>10 どうかはわからんけど、個人的には
Java→VB6 可
VB6→Java 不可
というような印象するんやけど。
確かどこかにデザインパターンをなんとかVB6で実装しようとしてるサイト
あった。ああいうのも、元々Javaあたりでデザインパターン学んだ人で
ないと無理やと思う。
それ以前に、VB6でもクラス使えるけどこのスレの前スレ前々スレで
オブジェクト指向的に使うのはよくない的な書き込みがあった通り
VB6でクラス使う人自体が少ないのかも。
あと、Java → C は可だけど、C → Javaで良くない例知ってる。
わからないならはっきり言ってもらえればいいのに、なまじCを十分使えるせいで
Cのような手続き的プログラミング手法でどんどん作っていってしまう人。
こういうの困るんよね。
>>12 もっと言えば
VB6 → .NET 不可
Java → .NET 可
って感じしないか?
なんかお馬鹿な議論。 新しい道具に適合できるかどうかが、前に何を使ってたかで決まるとは思えないし、 そんなはずがない。 単純に個人の資質の問題。要するに馬鹿かそうでないかだけの話。
>>12 >それ以前に、VB6でもクラス使えるけどこのスレの前スレ前々スレで
>オブジェクト指向的に使うのはよくない的な書き込みがあった通り
>VB6でクラス使う人自体が少ないのかも。
継承も出来ないようなもので、どうやってオブジェクト指向的に使えと…
継承
今日的には実装の継承は、本来インターフェイスの実装+委譲でやるべきことの 手抜きで出来るようにしているに過ぎない、とみなされるようになってきているから 必ずしも継承は無くても少なくとも機能的には困らないんだけどね。 コーディングの手間の面では困るけどw 最近どこかのブログで、継承がないのはむしろVB6の先進性を表しているのだ、 と誉め殺ししてるのを読んで、そういう見方もあるのかと思ったり思わなかったり
18 :
デフォルトの名無しさん :2012/02/23(木) 11:00:44.89
特に質問はありません。
おまえらImplementsができるVB6をバカにするな 集約とラッパーメソッドで継承っぽいこともできるんだぜ メンバが多いと効率悪すぎるけどなw
TreeViewであれListViewであれ、表示するValueObjectは implements使ってる。簡単に表示できるようになるよ。
vb6のいい所は frmMain.txtHoge.text="うんこ" とか何も考えずにできちゃうところだろ。 スレッドが作れないのもワザとなんだよ それなのに明示的にインスタンス作ったりとか 継承とかいんたーふぇーすとか以上とか具の骨頂
>>21 まあまだおまいさんぐらいわかった上で、
制限的な機能の中でソフト作っていくのはいいんだがな。
データ型すらろくに明示せずにもソフト作れるもんだから
会社の偉いさんが作りかけのわけのわからないソフトを
渡されるこっちは迷惑だ。
23 :
デフォルトの名無しさん :2012/02/25(土) 08:49:58.14
別の会社に発注した似たようなシステムのプログラムを渡されて これを参考に作れとは良くある話 それを渡すことで見積もりを抑える魂胆だが まぁ、人の作ったプログラムを読むのは実に精神衛生上よろしくない
VB5って無料で使えたのか
とりあえず落としとけ、手に入るうちに
ActiveXコントロールはVC++でつくるからいいや
>>21 まあ、お前ぐらいのレベルを想定してたんだろうな。
そういうレベルの奴はごまんといるから、その想定は正しかったんだが。
>>23 すべからく最悪のケースだな。
仕様書と動作が異なる部分、要するにバグ見つけて直して実装したら、
今の動作と違うと怒られたりして、何を信じていいのかわからん状態に
なったこと何度もあるよ。
「須く(すべからく)」の意味も知らないレベルの奴が偉そうな物言いしてて笑えるw すべからく最悪のケースだな = 最悪のケースにしなくてはならない、最悪のケースにすることは必須である 素直に「全て」を使わずカッコつけようとして間違ってるとか、もうねw
にちゃんで講釈たれる奴って、まだいたんだな。
おいおまえら、「北面の武士」って知っとるけ?
新人から6年VBやるのとJavaやるのと比べたら 断然Javaやる方が得られるものが大きいっしょ。 もうその後の運命変わる程に。新人でっていう条件付きでな。
XXしかできないってだけでダメな人間にかわりはない
まさにずっとVB6だからやばいわw やべーと思ってJavaでもやってみようと思うんだけど、業務アプリみたいなのが手っ取り早く作れない VB6プログラマのためのJava入門とか無いかな~
Javaは手っ取り早く作るための言語じゃないしなー それならc#のがいい
ああ、androidアプリ作りたいからJavaは避けて通れないんだ… andoroidでは自社特化の軽い販売業務システム系アプリも作りたいけど 本音は私的にゲーム作りたい eclipseでhelloworldまではこぎつけたけど、そっからがさっぱりだわ まあスレチなのでどっかに誘導してもらえれば…
いいから出ていけよ
できれば新人数年のうちにデザインパターンとその適用マスターしとけよ。 VB6ばっか触ってないで。 まあ、既にVB6のチームがある会社ってそう無いと思うけど。 基本的には、オブジェクト指向そのものを解説した本とかデザインパターン を解説した本って、Javaで説明してある本がほとんどだから まあJava勉強しなさいってこった。 まあUMLモデリングは効率的じゃないかもしれないけど、VB6でも勉強できる。 テキストが参考になりにくいが。 俺的には、VB6以外の言語で設計やら実装やらの修行を積んだ人が、 このスレでVB6へその技術の適用を紹介してくれると嬉しい。
うぜぇw
windows8ではもうvb6は動かないんだろうか
試験版出てるんだから試せばいいのに。 IDEがもし動かないにしても仮想PCで使えるしVB6製のソフトはランタイム入れておけば動くだろうし そこまでしてVB6でやんなくてもいいけどね
42 :
デフォルトの名無しさん :2012/03/03(土) 07:13:20.63
昔の話だが 役場や研究所で、自分でBASICのプログラムを作ってデータを加工したり 調べたりしていた人が手に負えなくなって発注してくることが良くあった 今の言語はそういう人からプログラム開発を奪ってる 自分の仕事をしつつ、片手間に習えるような言語ではなくなってしまった かといって外に何百万円も払って発注できる人は限られる そういう人にとってVBですら敷居が高いが、エクセルVBAでなんとか使えてる人もいるだろう フレンドリーな言語としてVBは無くしてはいけないな
>>42 >調べたりしていた人が手に負えなくなって発注してくることが良くあった
つまり、以前からフレンドリーでもなかったんじゃ…
>>42 AccessやExcelで凄いの作ってる人もいるからな
スタンドアロンをネットワーク対応にする依頼は結構ある。
VBの型のルーズさとポトペタguI設計はもっと受け継がれていいのにな
パソコンで身の回りをちょっと便利にする、てのがなくなって淋しいなあ
メールやwebだけじゃないのに
> パソコンで身の回りをちょっと便利にする その点においてVBは頂点に君臨し続けてるよね 第三者に公開するもの、ましてや他者から対価を得て売るものを作るとなると 旧VBの弱さは否めないが、自分や身内、趣味グループや会社の小さな部署やチーム内で ちょっとパソコンを便利にしたいって時の活躍振りで言ったら、今だ旧VBを超える物は存在しない だからこそ、最終バージョンの販売から10年以上も経つ言語なのに ちゃんとこういうスレが存続し、新規の質問もそれに答える人も居てさほど過疎化していない
VB6+SPREAD6(Vista)でメンテ中心でプログラムをいじってたのに Office2010 SP1を入れたらspreadのDataMemberプロパティをいじるたびに 異常終了を起こす状況に・・・ やっぱり、.netに移行しないと駄目だな。
>>44 データの保存先がデータベースとかならいいけど、
自分用にExcelVBAでちょこちょこ作るならまだしろ
人のために作ってると、社内資料が隠れてしまって困る。
そして作成者が異動や退職になった日には、
メンテもできず、完全にブラックボックス化してしまう。
そして、簡単にコピーできるもんだから、もう最新版に
差し替えとか簡単にできなくなるし。
>>45 >自分や身内、趣味グループや会社の小さな部署やチーム内で
>ちょっとパソコンを便利にしたい
もう、VB6とかExcelVBAの用途って、こんなもんしか無いと思う。
でも何も考えずにVB6で作れって上から命令がくると作らざるを得ないけど。
最近C++11でムーブセマンテックとかやってて気になったんだけど VBで S = Left$("abcd",2) とか書いたりすると、LeftがStringを作って、それをSにコピーして とかってなったりするの? それともこの場合は、Leftが作った領域へのポインタだけSにコピー?
1 vc10で作ったdllをvbから呼び出す 2 dllはCreateThreadして、新しいスレッドで 呼び出し元のスレッド(vbのメインスレッド)に対して EnumThreadWindowする。 EnumThreadWndProc内で 3 hwndに対してGetClassNameをする←ここまではok 4 hwndに対してGetWindowTextをする←ここで全スレッドのスタックが破壊 vb内の変数に別スレッドからアクセスできないのは知っているのですが GetWindowTextは別プロセスからではなく、同じプロセス内の 別スレッドから呼ぶと、スレッドセーフではなくなってしまうのですか?
> 他のプロセス内のコントロールのテキストを取得するには、GetWindowText 関数を呼び出すのではなく、 > 直接 WM_GETTEXT メッセージを送ります。
52 :
50 :2012/03/15(木) 15:20:59.98
それはやってみましたが同じでした。 そもそも、別のプロセスでもコントロールでもありません。
WM_GETTEXTをSendMessageしても戻ってきたときには両方のスレッドのスタックが 壊れちゃってるってこと?
別スレッドから呼ばれても安全な事をスレッドセーフと言うんじゃないかな 別スレッドから呼ぶと、スレッドセーフではなくなってしまうとか意味不明 それははじめからスレッドセーフじゃなかったって事だろ
55 :
50 :2012/03/15(木) 16:49:32.26
Declare Functionした関数を使い終わったあと vbがすぐFreeLibraryしてしまうのが原因でした。 LoadLibraryしてGetProcAddress(vbからは呼べないが)したら FreeLibraryされず、意図通り動きました。 (GetProcAddressしないと、手動でLoadLibraryしたにも関わらず かってにFreeLibraryされました)
56 :
デフォルトの名無しさん :2012/03/17(土) 12:50:03.68
例えば a$ = "12AB56" b$ = "34" という文字列があって a$の3文字目からb$を上書きしたい場合どうしてる? 例の文字列だと"123456"が得たい文字列
Dim a$, b$ a$ = "12AB56" b$ = "34" Mid$(a$, 3, 2) = b$ MsgBox a$
Dim a$, b$ a$ = "12AB56" b$ = "34" a$ = Replace(a$, "AB", b$) MsgBox a$
'参照設定 '-> Microsoft VBScript Regular Expressions 5.5 を追加 ' (C:\WINDOWS\SYSTEM32\VBSCRIPT.DLL\3) Dim a$, b$ Dim re As VBScript_RegExp_55.RegExp Set re = New VBScript_RegExp_55.RegExp re.Pattern = "AB" a$ = "12AB56" b$ = "34" a$ = re.Replace(a$, b$) MsgBox a$
Dim a$, b$ Dim re As Object Set re = CreateObject("VBScript.RegExp") re.Pattern = "AB" a$ = "12AB56" b$ = "34" a$ = re.Replace(a$, b$) MsgBox a$
Dim a$, b$ a$ = "12AB56" b$ = "34" a$ = Left$(a$, 2) & b$ & Right$(a$, 2) MsgBox a$
もっと賢いやり方plz
いやいやそういうあんた自身が賢くないだけだって。
a1$ = "12" a2$ = "AB" a3$ = "56" b2$ = "34" a$ = a1$ & a2$ & a3$ MsgBox a$ a$ = a1$ & b2$ & a3$ MsgBox a$
65 :
デフォルトの名無しさん :2012/03/17(土) 19:32:01.57
今まで普通に
>>61 してたんだけど
>>57 ができることに最近気付いた
Mid$(a$, 3) = b$
でいいのだけど、
式の左辺に関数があるってのがどうも妙なんだ
Replaceは知らなかったけど、置き換え前の文字が何だか予め調べないといけないね
数字以外の文字列で一箇所だけなら正規表現でよくね Set re = CreateObject("VBScript.RegExp") re.Pattern = "[^0-9]+" a$ = "12AB56" b$ = "34" a$ = re.Replace(a$, b$) MsgBox a$
>>65 それができるってのを知っているし、
関数でなくステートメントだというのもわかるけど
正直、可読性を考えると左辺には置きたくないよね。
>>69 使ってないけど、まさかデータ型のプレフィックス付けろとか
そんな警告出ないよな?
昔はマイクロソフトもシステムハンガリアン推奨してたんよね。
今は非推奨にしてるけど。
俺も使ったことないけど .NETへの移行ツールのようだから .NETに近いコーディングになるように警告出すんじゃね?
現在VB6.0で開発したアプリ(XPSP2上で動作)が 不可解な動作をしているため質問させてください。 ■アプリの機能 入力された情報を元にDBを検索し、その結果をGridに表示する。 ■症状 表示するデータが100件(レコード)を超えたあたりで、Gridにスクロールバーが 表示されなくなる。90件くらいまでは表示される。 一度90件あたりがひっかるる条件で検索を実施して、スクロールバーが 出る状況にすれば、その後は100件が引っかかる条件にもどしても スクロールバーは表示される。 Grid.rowsへのレコード数のセットや、DBの検索結果がとれていることは確認済。 初回起動後にGrid.rowsに100を超える値をセットすると起こるようなのですが どなたか解決策を知っていたらご教授ください。
>>72 Gridってどのグリッドよ?FlexGrid,DataGrid,HFlexGrid,その他外販
2回セットして回避できるなら一旦101とか設定すれば。
DB関係なくPGでデータセットしても起こるならグリッドの問題だし
切り分けようぜ
えっと、ListViewなんかでも、 表示すべきデータはあるはずなのに、 表示されないっていう事はたまにある。 再表示させたりすると直るが…
>>73 これは失礼しました。
昨日色々調べてみたんですがGrid32.ocxというVB6より前のものを
使用しているようです。
これ前から非推奨なんですねorz
正直作った人がすでにいないためなぜそれを使うのかも解らず。
早期に直す必要があるため、とりあえず初期値大きめにして様子を見ます。
ご返答ありがとうございました。
理由なんて簡単、当時はそれしか無かったから。 付け変えられるなら変えちゃった方が良いと思うけど
77 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/05(木) 15:02:36.75
>>69 使ってみた
.NETでは使えないコード表現や構文や関数等に”.NETでは使えない”という感じの注釈文が挿入されるだけ
代替案を提示してくれるわけでもない
.NETに移行するなら代わりのコードを自分で調べないといけない
微妙
78 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/09(月) 13:52:28.31
で、お前ら何がしたい訳? そんな突っ込み満載だが、なんでVBにこだわるんだって言う所から話を戻すべきな気が・・・
イスラム教徒に対して 「なぜイスラム教にこだわるんだ?」とか言っちゃったりするタイプの人か
VB信者ワロス
開発環境という程大げさではないんですが、客先での作業端末に仕込む各種フリーソフトを 一括でインストール(配置)しようと、VB6で作成するexeファイルに埋め込むような事は可能でしょうか。 最終形はフォームに各種ツールのインストールボタンがあって、クリックするとexe内からの相対パスになるのでしょうか。 該当のツールを任意のパスに配置、ということをやりたいです。
83 :
営利利用に関するLR審議中@詳細は自治スレへ :2012/04/11(水) 11:49:36.88
>>81 フォルダごとごそっとコピーじゃだめなのか
それだけで動かないレジストリ登録とか居るやつはインストーラ使わないとだめだろ
まだセキュリティアップデートがあったのか
クラスモジュール内に定数とか定義すると クラスのインスタンス生成するたびに定数分のメモリが増加してくの?
>>86 staticにできないから、そういう事になるね。
なるほど㌧クス
89 :
デフォルトの名無しさん :2012/04/18(水) 18:58:11.56
すみません、質問いいですか? 実はVB6.0のライセンス契約書を紛失してしまいました。 VB6.0ってまだ買えるんですか? VS2008proやVS2010proのライセンスでは代用できませんか? 教えて君ですみません。明日までに回答なんですが、よろしくお願い致します。
昔はMSDNに入ってたが今はどうなんだろうかな ライセンスの代用はできません
今見たら、MSDNでProduct KeysとISOのダウンロードができるな 入会してないとだめだろうけど
ダウングレードの条件がボリュームライセンスなので該当しているのならOKでは?
お、よく読んでなかった パッケージもOKのように書かれてるな
95 :
89 :2012/04/19(木) 18:45:19.15
皆さんありがとうございました。 念のためマイクロソフトのサポートに電話しましたら、同じページを案内されました。 これでスッキリVBを使えます!
flvの動画ファイルを1秒おきにキャプチャしそれを指定の行数(縦○個、横○個) みたいに並べ1枚の画像として出力するというソフトを作りたいと思っています。 何かヒントをお願いします。
その通りに作ってはどうでしょうか?
トラブルがおきたり行き詰ったりしたときに質問なさいな
>>99 親切にどうも。
そして、そのページを読んでも作れそうにないw
参考書を頼りに2、3個ソフトを作ったことがある程度なので。
1万円で誰か作ってw
そんなレベルの奴が何故VB6以前の古いVBを持ってるんだ?
そういや 個人からの依頼でアプリケーション作成する企業って聞いたことないな
採算あう条件ならそこらへんのソフト会社でもうけてくれるだろう 1万じゃ無理だろうけど
>>100 難しいことしないでもブラウザで再生しといて
タイマー置いて一秒ごとにクリップボードに貼付けて保存すればいいんじゃね
あとはビットマップの加工だろ
難しいことに挑戦したほうがスキルアップするだろうけど まぁ今更古いVBのスキルが上がったところで意味ないし時間もかかるからね 適当な企業にお望みのソフトを作ってもらえばいいと思うよ
106 :
デフォルトの名無しさん :2012/04/21(土) 07:36:16.00
>>96 flvファイルを画像ファイルに変換するのはフリーソフトあるだろう。たぶん。
変換後の画像ファイルを並べて一枚の画像にするのもフリーソフトあるだろ。たぶん。
「FLV キャプ フリーソフト」のキーワードでググりゃ出てきそうなもんだが プロのプログラマでもない趣味グラマというかアマグラマというような俺が 自前でソフト作ってる理由は、他者が作ったソフトはブラックボックスすぎて安心できないという理由だったが 個人製作ソフトだけじゃなく企業製作ソフトまで信用おけぬ社会となった今 OSやプリインストールソフトさえ疑心暗鬼になるわけで 既存ソフトと同様の働きするソフトを自作するのは無意味だと悟った 既存ソフトで出来ない頻繁に行う特殊な作業用途には自作するが アプリケーション作成できるプログラミング言語はフリーソフト含め多々あるが 俺が必要とするアプリのレベルや質からしてVB6が一番作りやすかったので 未だにVB6を使い続けてる理由だ
チラ裏
VA6には疑心暗鬼にならないの?
110 :
デフォルトの名無しさん :2012/04/22(日) 22:06:28.10
>>96 ちょうど動画をサムネイル表示するソフト作ってるところだよ
俺らのレベルだと動画ファイルから静止画を抜き出すのは無理だ
1時間の動画なら1時間再生して、タイマーでキャプチャすることになる
1.プレーヤーのハンドルを取得するFindWindow
2.プレーヤーを全面に出すSetWindowPos
3.プレーヤーの位置を取得GetWindowRect
4.プレーヤーをキャプチャGetDesktopWindow、GetWindowDC、BitBlt、ReleaseDC
5.プレーヤーの外周をカットして保存
それよりYoutbeの動画を保存するソフトの方が失敗するケースがでてきた
Youtbeの仕様が変わって、IEのテンポラリからファイルをコピーするのとは別に
もう一つのやり方、計二つの方法を使い分けないといけないらしい
その新しい方法について、誰か教えて
VB6で作ろうとするから大変なんであったSuzukaで作れば ちょちょいのちょい
個人趣味でVB6で作るならちょっとした些細な程度のアプリだよな
113 :
デフォルトの名無しさん :2012/04/23(月) 21:10:55.84
FLVプレーヤーはキャプれるけどWMPは裏技がいるよ
パソコン内に保存してる動画ファイルなら 動画ファイルのファイル構造を調べて自分で抽出するかすればいいんじゃね いわゆるコーデックの技術やろ?
flvはコンテナだからなー コーデックも複数あるしめんどいわな
静止画抜き出すんだったら、avisynth+avsutil が楽だよ。
v=directshowsource("動画ファイル", audio=false).ChangeFPS(15.000).ConvertToRGB24()
v.trim(446,447).ImageWriter("C:\TEST\hoge", 1, 1, "jpg")
こんな感じのスクリプトファイル(hoge.avs)を作って
avsutil hoge.avs play
とすると、C:\TEST\hoge000001.jpg ができる。
Win7Codecs を入れておくと吉
詳細は wiki で調べてみて
ttp://www.avisynth.info/
117 :
デフォルトの名無しさん :2012/04/26(木) 15:02:11.26
動画に詳しい人がいるみたいだけど Dalymotionから動画を落とすプログラム作った人いる? それ用の板にはどんなアプリで落とせるとかはあるけど 作り方のスレは見当たらないので
動画なんてflvやmp4のありかを見つけてHTTPでゲットするだけだよね。 ニコニコのダウンロードツールなら作ったことあるよ。
えっと、ストリーミングの存在を知らないとか?
いやまあDalymotionというのは知らないけど
googleっていう便利なサイト知ってる?
はぁ。どうでもいい。
>>125 googleっていう便利なサイト知ってる?
>>125 ニコニコのダウンロードツール作ったくらいで、
> 動画なんてflvやmp4のありかを見つけてHTTPでゲットするだけだよね。
と結論付けちゃうところが恥ずかしい。
>>127 あーそゆことか。
DalymotionというサイトではHTTPでアクセスできないのね。
いやいや、
>>124 みたいなのがよっぽど恥ずかしいよ。
誰しも知らないことなんて山のようにある。
山のようにあるけど、知ってる範囲で答えればいいよ。
回答する前にgoogleで調べるも調べないも事由。そもそも質問者がググればわかる質問の方が多いくらいだし。
知らないなら黙ってればいいのに
CravingExplorerのDalymotionというサイトのスクリプト見てみたけど 普通のHTTPでflvをゲットできそうだな。 むしろニコニコより簡単じゃないか?
勉強がてら寄生型の動画共有サイト作ったことあるけど
だいたいどこも仕組みは同じだよね。
違うのはニコ生みたいなリアルタイム配信くらいでしょ。
>>120 のいうストリーミングはこっちのことかな。
でもDalymotionは違うみたいだけど。
よく知らないけど、RTSPとかの場合じゃ無いの? よく知らないけど。
そして誰もググらない
RTSPはニコ生とかユーストだっけ?あれとかだよね? Dalymotionは普通にFlashがflv読み込みつつ再生してるだけみたいだけど。 これをストリーミングといってるならちょっとあれだよね。
つまり、埋め込み動画ページの動画ファイルへのURLの取得方法がわからんということになるのかな?
それはCravingExplorerのスクリプトかパケットキャプチャでもすれば わかるでしょう。 どちらにしてもたいしたことではないな。
なのに誰もやらない
CravingExplorerがあるから普通は要らないでしょう。 勉強がてら作るなら普通はニコニコだし。 Dalymotionなんて今日ハジメテ知ったし
エロ動画のサイトだっけ?
142 :
デフォルトの名無しさん :2012/04/26(木) 22:51:57.41
エロがあんだよエロが 中学生くらいのパツキンの子がWEBカメラで乳出しとか 既存のツールで落とせるけど人の作ったプログラムは嫌じゃん
潔癖症だな
自動ポルノは違法じゃねえの?
145 :
デフォルトの名無しさん :2012/04/27(金) 00:35:00.66
何言ってるの?人殺しだって違法なんだよ 毎年、数万人がサラ金朝鮮人に殺されてる日本で何をいわんやでございます
被害妄想を被害妄想と自覚できなくなったらもう立派な精神疾患だなw
いつまでDalymotionで遊んでるんだよ。 ダリーモーションってw だるいならするなよw
148 :
デフォルトの名無しさん :2012/04/27(金) 22:01:49.40
ちなみにサラ金朝鮮人に換金された日本人の命の数は そのほんの一部が金融庁で表になって公開されてるがな
そういう大事なことはこんなところじゃなくて駅前でメガホン持って言った方がいいよ。 で、「ママーあのデブのおじさん目つきが変だよ」「しっ見ちゃいけません」
150 :
デフォルトの名無しさん :2012/04/29(日) 12:58:46.25
毎年、朝鮮人に何万人もの日本人の命が 「費者信用団体生命保険」で金に替えられてるんだわ 総数は数十万人、そのほとんどが死因不明。 VBの質問がなければ話を続けてもいいぞ
徹底的にハードな熱湯浴するぞ!まで読んだ。
154 :
デフォルトの名無しさん :2012/05/06(日) 01:54:07.61
>>154 動画のダウンロードだろ?
当たり前、IEのキャッシュなんか使おうと思わない。
普通にウェブプログラムの初歩を知っていれば
ダウンロードなんて関数一つでできる。
サーバー側が対処しているなら、
リクエストヘッダ見てそれと同じ物を送るだけ。
君は、皮むき器の使い方を、
料理人向けサイトで探しているようなものなんだよ。
VB6でHTTP通信となるとWinHTTPが良いかな?
流れ読まず質問すみません OS WindowsXP SP3 VisualBasic 6.0 SP6 フォーム上にある複数のTextBoxのイベントハンドラを共用したくて WithEventsを用いてイベントをフックするクラスを作りました。 この時、すべてのTextBoxに対して未入力かどうかと入力数のチェックを行い 個々に数字のみ受け付けるものと、英数字を受け付けるもののチェックも行いたいと考えています。 この場合はフックした側のイベントハンドラ内で条件分岐が一般的なのでしょうか? それともフォーム側の元々あるイベントハンドラに個々の条件は書いても差し支えないものですか? 後者の場合、イベントハンドラの呼ばれる順番が本来のもの→フックしたもの、の順番のようなので 数字のみかどうかの判別した後に未入力や入力数のチェックとなり、想定しているチェックの順番と異なってしまいます。 それぞれに異なるクラスでフックするか、フックしたハンドラ内部で条件分岐するしか選択肢がないのでしょうか? 一般的な実装方法などあれば知りたいです。 また、この手のもので参考になるHPや文献などもご存知の方居ればご教授願えればと思います。 よろしくお願いします。
> 一般的な実装方法などあれば知りたいです。 ActiveXコントロール > また、この手のもので参考になるHPや文献など 市販のActiveXコントロール買え
>>157 >フォーム上にある複数のTextBoxのイベントハンドラを共用したくて
>WithEventsを用いてイベントをフックするクラスを作りました。
なんのためにクラスを作ったのかと。
数字のみを受け付けるクラス、英数字を受け付けるクラスを作成。
IValidateクラスを作り、validateメソッドを定義。
数字のみを受け付けるクラス、英数字を受け付けるクラスともに
IValidateをimplementsする。
IValidate_validateメソッドを実装する。
こんなとこでどうでしょうかと。
でもね、個人的には
>>159 で紹介されてるサイトの
「4.あとでまとめて」という方法が好きなので
別のユーティリティクラスもしくはユーティリティモジュール作成して、
数字のみ、英数字のみをチェックするメソッドを作っておくよ。俺なら。
質問をよく読んでから回答しましょう
>>160 > 「4.あとでまとめて」という方法が好きなので
Webアプリとかだと、これが一番いらつく元凶。
VBで言えば、lost focusでチェックできるならその場でチェックするのがUX的には最強。
少しはValidateさんのことも気遣ってあげて
165 :
157 :2012/05/14(月) 18:19:10.56
みなさんありがとうございます。
>>158 ユーザーコントロールの作成は今回は検討しておりませんでした。
また、市販のActiveXコントロールはブラックボックスなので
残念ながら参考には出来そうにないですね…。
>>159 そのサイトはいつもお世話になっています。
>>160 今ちょうどインターフェース継承と委譲に行き着いていたところでした。
数字のみの方は入力中に数字キー以外をkeyascii=0などで無効にしようと考えているので
今回はインターフェースの利用で行こうと思います。
付随して入力チェックに関していくつかご意見いただけた方々も含め
ご回答ありがとうございました。
方法によってはCtrl+Vなどには効かないというオチがあったりするがな
VB6.0と古い環境ですみません。 Access2000のDBにアクセスして、直近2年分のデータのみcsv形式で 引き抜きたいと思っております。 以下のように記述したのですがどうもうまく動いておらず・・ Dim DB As DAO.Database Dim StrSQL As String, strDatabase As String 'strDatabase = PbDbServPath strDatabase = "\\AAAAAA\AAA$\db.mdb" ' データベースを開く Set DB = DBEngine.OpenDatabase(strDatabase) Dim YM_hikaku As Date YM_hikaku = CDate(DateTime.Date()) YM_hikaku = DateTime.DateAdd("yyyy", -2, YM_hikaku) StrSQL = "SELECT * INTO " & _ "[Text;DATABASE=C:\AAA].[data_AAA.csv] " & _ "FROM 月別商品テーブル WHERE 日時 >= YM_hikaku order by CODE asc" DB.Execute StrSQL DB.Close 誤っていそうな場所。修正ポイントがありましたらご教授いただけますと助かります。
>>167 "FROM 月別商品テーブル WHERE 日時 >= " & YM_hikaku & " order by CODE asc"
変数名が文字列扱いになってる
>>168 大変助かりました!ありがとうございます!
Jetってselect intoでcsvファイル指定なんてできるのか
>>170 はい!できました!
データ型によっては\マークが前について気持ちが悪いですけど
>>168 >>169 "FROM 月別商品テーブル WHERE 日時 >= #" & YM_hikaku & "# order by CODE asc"
#なくて大丈夫なん?
Access開いてクエリでエクスポートした方が早いような ってのは言わない約束か
>>174 たしかにそのとおりなのですが
FTP経由でレンタル鯖(MySQL)にあげたいのです。
リプリケーションみたいなのができればいいのですが
csvファイルに落とすしか思い浮かびませんでした。
>>172 日付リテラルで渡すと、形式によって正しく認識されなかったような
>>175 MySQLのドライバ入れてリンクテーブル、てのは無理なのか?
>>176 レンタル鯖なので自由度がすくなくて・・
でもできるかちょっと勉強して試してみます。ありがとうございます!
当方VB6の経験しかないのですが、会社を辞めて求職中。 採用してくれる会社はあるでしょうか? それとも異業種に転職した方が良いでしょうか?
VB6以外の言語を覚える気が無いんですか? もしそうならどこの会社も無理です
>>179 30を過ぎてからプログラムをはじめて現在35歳。
他の言語を覚える気はあっても
応募した会社はそういう所は評価してくれません。
あなたのやる気なんて知ったことではないんですよ あなたは何ができますか?VBだけですか? 会社辞めて何日たちましたか?その間に覚えた言語は何種類ですか? その何種類かの言語で何か人に見せられるくらいのものを作りましたか? では見せていただけますか?
>>180 30過ぎという時点で、採用側は即戦力となる事を期待している。
したがって他の言語を覚える気があるって言われても、
即戦力で他の言語を使えるレベルだって事を証明してくれないと採用には踏み込めない。
口先だけいい事を言う奴は沢山いる。
実務経験はないけど、MCP C++持ってますとか、SJC持ってますぐらいの事は
言ってくれないと採用にはつながらないよね。
>>181 そういう質問する会社なんてねーよ。
>>182 5年でVBしかやってない人に即戦力期待するわけねーじゃん。
うちの会社だと基本的に30すぎた人採用しねーし。
資格で可能性があるとしたら、かなり難易度高い資格持ってるとか
うちの会社で誰も持ってない資格持ってるとか。
経験したプロジェクトのうち、高度な数学処理とか高度な経理処理とか必要で
そういうのを扱ったコアメンバーであるとか。
30過ぎてたら●●言語が扱えますってのは武器にはならないけど、
●●言語しか経験してないっていうのは余計に印象悪くするから
職務経歴書には言語は特に記載しなくていいかもね。
聞かれたら答えるとか、言語は他に●●もいけますとかぐらいに答えて。
マ板
185 :
デフォルトの名無しさん :2012/06/03(日) 23:26:38.22
何か質問してよ
現状でまだVBで行くって所は、人員がそういう構成だって事 つまり余ってない
VS-FlexGrid Pro 8.0Jについて教えてください。 ・行単位の選択にしているのですが、複数行選択できてしまいます。 1行しか選択できないようにはできないでしょうか? ・プログラム側からスクロール位置を指定できないでしょうか? それっぽいメソッドやプロパティが見当たりませんでした。 どうぞよろしくお願いします。
vb6のListViewで.netのBeginUpdateを実現できるAPIとかないですか? ファイルの検索結果を表示するのが遅いので。
WM_SETREDRAW
ありがとうございます。 SendMessage ListView1.hwnd, WM_SETREDRAW, 0, 0 としても WM_SETREDRAWを無視しているか、 Addしたときに勝手にWM_SETREDRAW, TRUEされているようで、 表示は更新されてしまうし、速度も変わりませんでした。
一度非表示にしてリスト追加終わってから再表示じゃダメなん?
若干速くなりましたが、Windows標準と比べると全然。 VBではここが限界?
ListView自作しちゃったほうが早そうだな
195 :
デフォルトの名無しさん :2012/06/05(火) 21:30:17.04
デフォルトのコントロール以外を使うと 他のマシンで実行する時にEXEコピーだけで済まないから自作することが多いなぁ プログレスバーだのリストビューだの
>>190 LockWindowUpdateは避けるべき。ソースはThe old new things。
で、違う環境ではあるけれども、DelphiではWM_SETREDRAWでBeginUpdate/EndUpdateを
実装している。なのでやり方が悪いのではないかと…。単純なテストプログラムで試してみては。
あるいは
>>191 のVisibleを制御する方法も。
ぺがらぼ - etc 研究室
http://bbs.pegalabo.net/c-board.cgi?cmd=ntr;tree=1;id=etc >VB6などで、描画メッセージを無効にして、その間にコントロールを追加するという技法は、
>
>Visible = False
> ~ 追加処理~
>Visible = True
>
>という感じでやるのはあまりにも有名ですが、
>ListBoxの場合は何故かちらついてしまいます。(ComboBoxは大丈夫)
>
>そこで、
>
>Call SendMessage(ListBox1.hWnd, WM_SETREDRAW, FALSE, &H0);
>
>とやることにしたのですが、どうもListBoxは描画されているようです。
>(これもComboBoxは大丈夫だったのですが)
>
>何故なんでしょうか?
>
># 実際に、その後ウィンドウなどで隠しても描画されちゃってました。
>>199 こんなの納められたらたまったもんじゃないな・・・
テスト仕様書とかどうなるんだこれ
ネタをネタと
>>188 表示は非同期風にすれば気になら無いのでは?
203 :
188 :2012/06/07(木) 11:07:16.30
すいません、恥ずかしながら、全然違う原因でした。 表示中にアイコンを読み込んでいるのが原因でした。
204 :
デフォルトの名無しさん :2012/06/10(日) 00:16:56.57
VBは自動テストツールはありますか?
あります。
206 :
デフォルトの名無しさん :2012/06/10(日) 02:22:55.66
ありますん。
207 :
204 :2012/06/10(日) 10:06:22.12
こうやって情報後出ししてくる奴は、教えたところで アレが気に入らない、コレが使いにくいと後出しで文句言い続けるから なるべく早い段階で放置に切り替えるのが吉
209 :
デフォルトの名無しさん :2012/06/10(日) 11:30:16.87
そう言わずに解説ページだけでも教えてくれませんか
まあその前にあるかの質問にあるだけで回答してるからな。 そりゃふりーかどうかは別にしてどんなのがあるかまではきくだろうし。
しかしまあググらない人ばっかりね
212 :
デフォルトの名無しさん :2012/06/11(月) 02:35:55.14
ドキュメント生成ツールなら知ってるけど 自動テストツールって何よ 本来のINPUTがない環境で実行したい、とかなら自作以外に方法がないと思うけど 決まった操作を自動でしたいというならフリーでUWSCというのがあるけど たぶんそれのことじゃないんだろうな
ロードランナーでいいんじゃね?っすげー高いけど。
勝谷誠彦 馬鹿どもに声高に抗議するのに疲れた今やるべき事
テレビで節電が叫ばれているが、そもそも昼間のテレビほど無駄なものはない。
無駄だけではなく、人をバカにする。公害である。
これだけ言われても電波を止めないというのであれば、私たちのライフスタイルを変えて観なければよろしい。
高校野球もだ。NHKの中継を一切観ない。いや、中継をしているのならば受信料を拒否する。
「みなさまのNHK」が節電に反する国賊行為をしているのである。当然のことだろう。
球児たちのためにも大会はやればいい。ただし、早朝試合とナイターにする。
熱中症についてあれほど報じながら炎天下で球児に試合をさせる朝日新聞の神経が私にはわからない。
馬鹿どもに声高に抗議するのにはもう疲れたし効果がないこともわかった。
だから私たちはゆるやかに生き方を変えて、奴らを不要なものにしてしまおう。
この柔らかな革命がうまくいけば、たとえば不当な税金に対しても、日本人は立ち上がるすべを覚えるかもしれない。
電力不足と、節電などを嘘つきどもが押しつけてくるこの夏は、日本人にとってあるいは歴史的な好機になるかもしれないのだ。
静かに、したたかに、この夏を楽しもうではないか。
こうすれば節電できる式の記事や番組も無視することだ。おまえらがそういうことをやめるのが、
いちばんの節電だ、ともうわかったのだから。
http://news.livedoor.com/article/detail/6622645/
215 :
204 :2012/06/11(月) 12:58:33.92
質問が曖昧だったみたいですいません。 フリーの単体テスト用のツールがあるか知りたくて質問しました。
VB6の頃は自動テストなんて概念がなかったからな
あったよ?
マジで?
vbunitとかbvunitとかそれっぽい名前で検索したら引っかかるだろ
>>216 そんなことはないよ。
Windows3.1の頃にはMicrosoft謹製のGUI自動テストツールがあった。
その後、Windows2000が出るころには、GUIが複雑化したせいか、
いったん製品ラインナップから消えていった。
最近になって再びMicrosoft Testって製品が発売されてる。
水車を何百年もかけて結局普及出来なかった国のお話 エベンキ朝鮮猿の知能が犬や猿以下だったことの証明www ↓中国と日本から何度も輸入しているのだが・・・ 1429世宗11年12月3日 日本の水車が凄いと報告 1430世宗12年9月27日 水車を造ろうとする 1431世宗13年5月17日 「中国も日本も水車の利を得ているが我が朝鮮にはそれがない」 1431世宗13年11月18日 日本と中国の水車の研究の記述が散見 1431世宗13年12月25日 水車導入を試みる 1451文宗元年11月18日 20年かけて水車の導入失敗 1488成宗19年6月24日 水車導入の試み(成否不明) 1502燕山君8年3月4日 水車導入の試み(成否不明) 1546明宗元年2月1日 水車導入の試み。琉球(沖縄)と中国から福建式水車輸入 以後百年間水車の記述無し 一方お隣り日本では、鉄砲伝来後3年目にはすでに量産体制。 1650孝宗元年5月15日 水車導入の試み 30年記述無し 一方お隣りの日本では、鉄砲量産10万丁 1679肅宗5年3月3日 水車を造らせたと記述。そして70年記述無し 1740英祖16年4月5日 水車など無くなりました『孝宗大王嘗頒遼瀋水車之制於外方, 今無見存者』 1740英祖16年11月20日 水車を造らせたと記述(18世紀時点でわざわざ記録に残す程?) 1764 1763-64年の朝鮮通信使「日東壮遊歌」(淀城の水汲み水車の感想) 「その仕組みの巧妙さ見習って作りたいくらいだ」と記述 1795正祖19年2月18日 水車之制について盛んに出てくる。つまり試作中 1811純祖11年3月30日 ここの記述で水車なんか必要なのか?と書かれており全く普及していない事が読み取れる
222 :
デフォルトの名無しさん :2012/06/12(火) 15:38:47.08
>>221 ちょーくだらねぇ
死んでしまえ
正統派嫌韓厨なら民団総連解体について何か言えよクズ
ネトウヨきもっ、まで読んだ。
224 :
デフォルトの名無しさん :2012/06/17(日) 23:10:29.32
何ってなんだ?書いてある通りじゃないか
機械翻訳のせいで意味不明だってことなんだろ きっと
くそ翻訳はそのページにかぎった話じゃないしな。。。
外人の「MSのドキュメントは難解だ」みたいなネタ見たことあるw
this behaviour is by design MSDNに慣れたせいかAppleのドキュメント読みづらい・・・
ActiveX EXEで、アパートメントスレッドで、独立型起動可能に設定しています。 独立起動時にも、オブジェクト(スレッド)作成時にも、Sub Mainが呼ばれます。 独立起動の場合は、メインフォームを表示しますが オブジェクト作成時には何もしないので、場合分けしたいです。 Sub Mainの後にClass_Initializeが呼ばれるので オブジェクト作成予定なのか判断する方法はありませんか?
VB2製のプログラムはwin7では動かないんだな・・・
234 :
デフォルトの名無しさん :2012/06/26(火) 09:38:03.94
VB2のソースがあればVB6に移行するのは それほど大変じゃないと思う
235 :
230 :2012/06/26(火) 10:56:17.87
>>232 ありがとうございます。
まさにこれでした。
アパートメントスレッドって何?
240 :
230 :2012/06/27(水) 12:35:20.47
もちろん、マルチスレッドにするためです。
プロセス上は確かにマルチスレッドだが・・・。 プログラムで同期制御できないプロセスをマルチスレッドと言ってよいものかね? セマフォとかクリティカルセクションとかね。
パイプとか使ってもできんんの?
プログラム仕様としてはマルチスレッドではないけど 実行処理上はマルチスレッドと言って差し支えないはず
そんなこと言ったらEXEからEXEを非同期起動してパラで動かせばマルチスレッドじゃんw 腹イテwww
スレッド ⊆ プロセス ⊆ タスク スレッドの定義からして マルチスレッドとは呼べないものじゃないか
246 :
230 :2012/06/28(木) 08:24:28.73
>>241 どちらかというと、マルチスレッドなのに必ず同期処理になってます。
わざわざ、Formに追加したTimerから処理を開始しないと
非同期になってくれない、素敵仕様。
.netにしたほうがいいと思うよ。
マルチスレッドで同期処理とかもうねwww SQL Serverの接続を並列させてコネクション数当たりのベンチマークとかには使えるかもね。
初回起動に10秒もかかる言語に我慢できる人は このスレに来ない方が良いよ。
>>249 そんなこと言ったら4th Dimentionを使えないよ。
JITコンパイラがあるだけマシだよ。.netは。
VBRJP200.DLLを%WINDIR%\SYSTEMに入れたらWin7でもVB2のプログラム動いた
>>251 動くね。昔からあるプログラム作り直すのしんどいのでそれで対応した。
win7でVB6 & DX8で作ったアプリ持ってったんだけど動かなかった 参照設定見たらDirectX 8 for Visual Basic Type Library (dx8vb.dll)が無かった (DX7も無いし) まいったなあ・・・
VB6はサポート切れなのかDX9の同様のライブラリがあればいいのにそれすらない やはりVB6とはお別れの時期なのか
VBRJP200.DLLと同様にdx8vb.dllを持ってくれば動くのかな
Direct 3Dになったのに馬鹿?
dx8vb.dllを入れたけどダメだった
>>256 アプリで使ったのはDirectSound
自作アプリは作り直すことも可能かもしらんが(面倒だしやらんが) ネットで入手したフリーソフトとかはもうダメだな・・・有用なソフトを使えなくしたWin7の罪は重い
ImgXという画像処理系のOCXがあるんだが XPでは全く問題無く使えていたがWin7で使えない。 REGSVR32での登録は成功するのに VB6でコンポーネンの一覧でを有効にすると読み込みエラーになる。 他の依存ファイルといっしょにC:直下のフォルダとか色々場所を変えて 登録しなおしても駄目。 一体何が起きているのだろう????
>>260 そのOCXがWin7に非対応なだけじゃなく?
>>261 そうだと思うけど。Win7に非対応なOCXって一体?
OSのバージョンチェックでもやってるとか?
すでに販売が終了してサポートも受けられない状況だけど
過去のフォーラムとか見るとWin7の64bit環境で動いている人もいるようだし
Win7非対応という線も疑わしいんだけど仕方ない。
>>263 開発環境をWin7 SP1に移行したばかりでそれはないよ。
ADOでSQL Serverに接続するアプリをWin7 SP1でビルドして
Win7無印や、Vista、XPで動かすとエラー。
この問題は解決したけど、こんなことがあるようじゃVB6もそう長くないと思った。
何いってんだこいつ
話について来れないなら無理して書き込まなくてもいいのに。
内容を完全に理解した上で、何いってんだこいつって感じなんですが
完全に理解してるのに「何いってんだ?」とかおかしくね?
何いってんだこいつ
VB6なんか使ってるからリピート変態になる。
271 :
デフォルトの名無しさん :2012/06/29(金) 15:46:08.59
VB6で作ったアプリだって事がバレないようにする方法ってない?
貼ろうと思ってたら貼られてた
販売・サポート終了したOCXもってきて、VB6も長くない、とか謎すぎる
>>271 それをしてどうするのかのほうが気になる…
>それをしてどうするのかのほうが気になる… C++で作ったように思わせて自慢したい。
>>272 日本語読めんのか?
サポートされるのはランタイムだけだわ。
ここで問題になっているのはデザインタイムだろうが?
これだから、未だにVB6にしがみつく.net適応障害野郎はこまる。
VB6、使い始めて10年目にしてはじめてImplements Interfaceを使った。 VB6の潜在能力ってすごいわ。
どんな自虐ネタw
Dim a As New ClassA 'Implements IFoo Dim b As New ClassB 'Implements IFoo Dim c As New ClassC 'Sub Hogeを持つ Dim f As IFoo SubHogeを持つ Dim v As Object Set f = a 'OK Call f.Hoge 'OK Set f = b 'OK Call f.Hoge 'OK Set f = c 'NG Set v = a: Call v.Hoge 'OK Set v = b: Call v.Hoge 'OK Set v = c: Call v.Hoge 'OK
>>278 インタフェース継承なのだから当然だろ?
実装継承との違いもわからんのか?
氏ねアホ。
warota
まぁまぁ
282 :
デフォルトの名無しさん :2012/06/30(土) 02:44:40.83
氏ねアホはないだろう 仕事で使ってる者から趣味で使ってる者までいるんだから 人様をアホ呼ばわりして優越感に浸る279の方がよっぽど狭い世界に生きてるアホだわ
値からEnum名を取得方法ってある? Enum HogeHoge ValueABC = 1 ValueOK = 2 ValueFoo = 3 End Enum value = 2 Print なんかメソッド(HogeHoge, value) → "ValueOK"を返すみたいな そんなメソッドとかある?
>>282 仕事のほうが辛らつだよな・・・2chはあおりだって割り切れるけどさ・・
本当心が折れそう
>>282 お前も遠まわしに人をアホ呼ばわりしてることに気づけアホ。
>>283 strEnumName = 3.EnumName
VB6でビルドしたアプリのプロセス名がThunderとかになってるんだけど 稲妻と関係があるの?
>>275 すでに終わってる言語であって、ランタイムサポートだけ続いているものに
なにを期待してんだって話じゃね?
>>284 Windows7にVB6とかいう指令がくると、折れそうです。 わりとマジで。
本当にいまだにVB6使ってる企業なんてあるのか。 っていうか、言わぬが華かもしれんが、そんな会社に所属してる時点でいろんなものが折れ(
MSが思い切ってVB6を使えないようにすりゃ解決するのにね
>>290 つい先月、客先のVB6製システムの改修を行ったよ。
さすがに新規案件ではVB6はないね。自分とこだとJava、C#、VB.NETあたりかな。
そういえば、落札できなかったけど、入札に参加したシステムにもVB6のがあった。
>>291 約10万企業が操業停止になるわ。
以外に多いのがサーバーサイドのActiveX開発にVB6が使われている件。
金融でも一部COBOLのサブセットに使用されている例もある。
以前に富士通が証券会社のシステムを止めて大騒動になった時
VB6で作ったシステムだけは問題無く運用できていたという。
VB残したらいいのにね DotNetは機能的に優れていても起動が遅すぎだわ あと多機能だから 新人とかに書かせるとVBより酷いバグが出るイメージ
>>287 初期開発コードネームが 「thunder」
サンダー....杉山
>>287 プロセス名じゃなくクラス名だろ?
ThunderRT6とか
>>294 OCXとか開発ツールを販売しているGrapeCityとかがVB6を完全に蚊帳の外にしてるからなぁ。
.netで開発するのが当然とか、ある意味理解できるけど全ニーズをカバーしてないんだよね。
COBOL言語が今もなお健在なのが物語ってる。
>>292 俺のところはいまだVB6健在だぜぇ?
正直触りにくくて困ってる。めんどくなって最近追加した機能はみんな
そのVB6.0とおさずにPerlでやっている
VB6のCOBOL化決定かな
>>293 日本企業の話?
海外企業のほうはVB6とかどういう状態なんだろうね
こちとら趣味グラマだから仕事とか業界の情報とか全くちんぷんかんぷんだ
303 :
デフォルトの名無しさん :2012/06/30(土) 20:00:28.79
オブジェクトCOBOLという製品は存在するが オブジェクトVB6は存在しない。 VB6の負けw
問題なのはVB6自体じゃなくて 一緒に組み込んだサードパティ製などのランタイムのほうの新OSへの対応だな
VB6はもとからオブジェクト指向言語
なんか約一名、オブジェクト指向言語を知らない人がいるみたいね。
VB6はよくできた言語だが、今見ると時代遅れの感が否めない。
>■Poor support for object-oriented programming[18] ワロタ
VB6でOffice 2010のようなタブ式のフォームって設計できますか?
・The development environment is no longer supported by Microsoft. ヲワタ・・・。
Word2010開いてみたけど タブってメニューのこと?
>>311 死亡宣告はもう10年以上も前に出てるんですが。
今頃何をいってるんだマジで
>>312 MDIの子ウィンドウがタブ単位にまとめられるデザインの事だと思うが?
MDIはMSが推奨してないからな。でも画像ソフトとかは画像を自由に比較できるんで
MDIの方が使いやすいんだが。
タブブラウザなどのタブは 実は進化したMDIである
親フォームにタブをつければいいのか?
MSは推奨してないのに自前のOfficeにはのっけてるだか?
とりあえずUAC切って一旦登録しちまうか互換モード使うかすればだいたい動く 特に互換モードなら95からVistaSP2までカバーしてるから結構動いてくれるよ
>>299 OCXのサポート状況は気付かないフリして騙し騙し使ってるよ
>>316 ばか?
>>317 MSのMDI廃止方針のために、Photo Editorとか使いやすいアプリがなくなってしまった。
PhotoEditorが変なアプリに変わったのは衝撃だった オヒスのアップグレードを断念しようかと思ったくらい
>>321 PhotoDrawというソフトがあったでしょ?Office 2000に付いてきて
その後単独でPhotoDraw2という商品が出たけど。
PhotoEditor支持者なら、これの良さが理解できるはず。
マスターアップから10年以上経過した今も現役で活躍中。
思えばあのあたりを皮切りにMSがおかしくなったような気がする。
>>319 「サポート」の意味は動作の保証を意味する場合が多く
「非サポート」でも問題無く動くのであれば自己責任で使えばよい。
問題は、OS依存の部分があって動かないもの。これはどうしようもない。
324 :
デフォルトの名無しさん :2012/07/02(月) 10:16:03.86
MSがMDIを推奨しない理由は?
日本語版のWikipediaのMDIの項目にMSが非推奨してるとかかれてるだけで
英語版のほうではMSについては書かれてないけど、どこぞでおきたMDIについての議論のアーカイブページへのリンクはあった
VS2010のページだがこれでもMDIは非推奨だから使って開発するなとかそういう文言は一言もない
マルチ ドキュメント インターフェイス (MDI) アプリケーション
http://msdn.microsoft.com/ja-jp/library/xyhh2e7e (v=vs.71).aspx
Microsoft Windows ユーザー エクスペリエンス FAQ
http://msdn.microsoft.com/ja-jp/library/ms997581.aspx アプリケーションには SDI と MDI のどちらを使用するべきですか?
大部分のプロダクティビティ アプリケーションには SDI (シングル ドキュメント インターフェイス) が適しています。
MDI (マルチドキュメント インターフェイス) は依然として使用されていますが、今日のユーザーとオペレーティング システムにはあまり合っていません。
ユーザーはより単純で使いやすいソフトウェアを求めています。
Windows8のアレを考えると、ガキ&バカ用と一般用のどちらを作るか選べという事だわな
複数の画像を比較しながら編集しようという時に、MDIなら編集対象の画像を並べて アクティブ化し、共通のメニューとツールバーで効率よく作業できるが これをSDIでどうやれと? 同じメニューとツールバーが付いた画面を複数並べて、それぞれのウィンドウに画像を表示させ サイズを見やすいように調整し、タスクバーで切り替えながら作業をしろと?
329 :
デフォルトの名無しさん :2012/07/02(月) 16:17:39.32
>>327 MSもWindows 8が失敗作であることは認識している。
Windows 8を失敗作にすることで、ひとつ前のWindows 7が良いもののように見える
錯覚効果に期待しているそうだ。
これでユーザーのXP離れが進めばMSのマーケティング思想に近づけることが出来る。
Windows 7もVistaより良くなった事が評価されているが、その存在価値については
未だにほとんど認められていない。
ユーザーはPCを買うとWindows 7が付いてくるから仕方なく使うが、我慢できないユーザーは
XPにダウングレードして使っている。MSはそんな事も知らずにWindows 7のユーザー数が
Windows XPのユーザー数を超えたとか発表するが、実際はまだまだXPのユーザーの方が多い。
>>328 「複数のファイルを開くアプリ」は「大部分のプロダクティビティ アプリケーション」には含まれないということでは?
>>331 つまり、「マイノリティ」は氏ねと?
いかにも企業ユーザー擁護第一で、一般ユーザー二の次にして
見事にアップル社にコンシューマIT業界のトップの座を譲り渡した
マイクロソフト社らしい見解だな。
>>332 その「企業ユーザー擁護第一」のお蔭で今日VB6が健在であることも忘れないように…。
>>334 >「あちこちに散らばったダイアログをひとつのウィンドウにまとめて利用することが可能」
ダイアログを単独に複数表示させて使いずらくする事とMDIとは何の関係もないと思うが?
関係ないならなんなの?
MDIを推奨しないのは大多数のニーズがないって理由って事でFA? 少数派のニーズのために推奨はしないけど使わせてもらえる事に感謝しろとでも? Visual Studio 2010でMDIで設計すると親ウィンドウでイベントが一切取れない。 それができるVB6はその意味でも素晴らしい言語システムだと思った。
338 :
デフォルトの名無しさん :2012/07/02(月) 17:16:51.60
OSがハードのリソースの大部分を持って行ってしまうという構図が大多数のユーザーに受け入れられなかったMSの負け。 その逆にアップルはOSをシンプルにして最大のビジュアライズをOSとアプリの両面からサポート。 この方向性に気づいて慌ててでっち上げたのがWindows 8。ボーナス欲しさに技術者が必死に作った作品。 技術者が夢を追ったアップルと金を追ったMS。この先はもう見えている。 唯一MSが巻き返せるすれば、iPadで動く.netフレームワークを作り、Visual Studioで開発可能にする事だけだろうね。
>>332 どうしてそうなるかな。
MDIこそが適切なアプリケーション(複数のファイルを同時に開くアプリケーションなど)以外のアプリでは、
MDIよりSDIの方が適してるよ、というだけのことでは?
>>339 はじめからそう言っていれば良かったのにね。
MDIについて誤解を招く表現が横行してしまっているのが悲しい。
342 :
デフォルトの名無しさん :2012/07/02(月) 17:29:48.46
>>340 Novell社って、あのNetwareのノベルのこと?
俺、CNEの資格持ってたんだけど、あれってまだ有効なのかな?
前の前の前の会社で取得したけど、かなり金がかかったらしい。
試験は全科目一回で合格したけどな。
過去物のおかげだがw
なにいってんだこいつ
>>342 俺は3回でやっと全科目合格した。貴君は優秀だね。
野田は誰もが認める売国奴だが、隣国と経済的に良い関係をもつことは悪くない。
趣味VB6なんですが、最初表示されてたツールバーのツールチップがいつの間にか 表示されなくなるのはバグ?本当のところは表示はされてるけどフォームの 後ろに隠れて見えなくなってるんですよね。ツールチップの意味ないわw
>>346 日本のODA = N-ODA = NODA
>>347 VB6のIDEをWindows 7で使っていると
検索文字欄に入れた漢字が化けて全角検索できない。
一番困るのはファイルをセーブするときで、文字が化けるので保存できないw
XPモード使えばいいのに
開発環境と実行環境は同じであるほうが望ましい。特にOSのバージョンはね。
古いシステムから新しいシステムに切り替えることでIT特需が発生して金が回り景気がよくなるとかないのかな いつまでも昔々に作ったシステム使いまわしてメンテするのはいかがなものかと だからMSは旧VBを一切動作しないようにすべきだったのさ
VB6を残すのはゲイツ会長の勅令だっつーの。
病院行けよカス
VB6が残ってなければMS系の開発者は半減していただろう。 MSの判断は正しかったと思うが?
逆だな。 新しい技術を取り込めない人間を殺さずに、生かしてしまった。 昔で言う、コボラーだ。給料は高いくせにVB6しかできない。しかもクビにできない。
357 :
デフォルトの名無しさん :2012/07/02(月) 22:51:19.76
俺はVisual Studio 2010を使用して主にC#で開発をしているがVB6もたまに使う事がある。 XPからランタイムがデフォで入ってるから手軽にツールをリリース出来て重宝している。 言語なんてそもそも道具なんだからその程度のノリで使うものだろ? 考え方が重すぎるんだよキミらはwww
コボラーを馬鹿にしてる奴がいるようだが重要なのは業務知識。 最先端の言語を使いこなせても金融の知識が無ければ銀行システムには手が出せないだろうが? 銀行系の案件はコボラーが占めている。口惜しかったら.netとSQL Serverで金融システムを構築してごらん。
銀行再編でデータぶっこわしまくった奴がえらそうに。
最も大きな弊害は、頭の足りない人間的にも問題がある若造が最先端の言語を使って自慢してる事。 最先端の言語が悪いのではなく、使う奴に欠陥人間が多いので評判が悪くなり浸透しない。 VB6はプログラマーがいいおっさんになっているので、人間的にも成熟した人が多く使う。 よって、まともな仕事をしてくるので仕事を依頼しやすい。
361 :
デフォルトの名無しさん :2012/07/02(月) 22:57:22.37
362 :
デフォルトの名無しさん :2012/07/02(月) 23:00:24.56
>>362 記事からすると、海外製パッケージと邦銀の業務要件に乖離があったりで、
要件定義で既におかしくなってたようだから、COBOLでも同じ結果だったんじゃない?
100億の仕事とかよくやるわ 俺は300万くらいのでいいや
VB6.0のものを新しくするのにお勧めの言語はありますか? .NETも同じようにめんどい移植しないとだめになるっぽいですか?
>>365 つVB.Net
そこそこのスキルを持ったPGならC#を進めたいが、
期待出来ないならば開き直ってVB.Net。
ツールと手作業で適当に移行したらいいよ。
>>366 やっぱ適当になりますよね・・・
どうせデータ加工部分だけまともに移行できればいいですしね。
俺はVB.NetでプログラミングしてコンバーターソフトでC#に変換して提出している。
逆の変換は難しいようなのでVB.Netの一択。
しかし、これからの時代、
>>340 みたいのも出てくるんでC#をおすすめする。
VB6ソース渡されてこれ移行してなんて言われたら VBライクなソースになるのは仕方ないと思う それで後悔する事は十分にあり得るよ
VB6ソースを渡されたら、VB.net出作り直すという発想はVBしかできない人が言う事。 オールマイティーならC#を選ぶと思う。仕事を技術力のある人に引き継げるメリットは大きい。
Scale ModeをUserにして自由なスケーリングモードで設計したソースがある。 たとえばグラフ表示機能で、伸縮してサイズを変えてもゲージが追従する優れものなんだが これをピクセル単位一択の.net環境に移行するにはどうしたらいいだろう?
>>370 理想はね。
コンバーターで済む作業をオールマイティなPGに頼むなんて勿体無いわ。
C#のコンバータ使うんじゃないだろうか。
>>371 そういうのに限らずTwipsでスケールしているようなプログラムは
コンバートを考えずにゼロから作り直した方がいい。
ゼロから作るよりスケール調整の方が時間がかかるぞ。
デフォルトがTwipsだからな 一番最初VB6を始めたときびっくりしたわ 思うように絵が描けなくって
>>376 デフォがTwipsなのは問題無い。それはピクセルにコンバート可能だから。
問題はTwipsの特性、つまり画面サイズ変更に同期したスケーリング特性を
利用したプログラムだとヤバイ。
思う様に絵が書けなくてピクセルにスケーリングして書いていたのなら問題ない。
378 :
デフォルトの名無しさん :2012/07/03(火) 12:57:50.92
逆に、.netでTwipsみたいなスケーリングはできないの? アンカー機能とかで代用しろとでも?
Dim Strs() As String result = Join(Strs, Delimiter) で配列を結合できるように、 ListBox.ListやCollectionを結合する関数はありませんか? result = result & ListBox.List(N) & Delimiter みたいにしていくしかありませんか?
コントロールの特定プロパティをループで抽出しながら連結しかないでしょ。
配列に入れてjoinすれば?
配列に入れる分無駄なステップじゃない?
ExJoinを使うがよろし
ExJoinって何? ググってもよくわからない。
えっ?
俺が作ったライブラリだよ。
ExJoinを更にパワーアップしたものに Super EXJoinというものがある 略して
Super EXJoir
SEX SEX SEX SEX もう二回♪ 何の歌か分かったらおっさん。
モニカ by 吉川晃司
394 :
デフォルトの名無しさん :2012/07/04(水) 00:48:43.10
>>391 サンクス サンクス サンクス サンクス モ~ニカ~♪
でねーの?
今時VB6を使ってる奴らときたらもうね。。。
396 :
380 :2012/07/04(水) 10:29:27.85
>>381 と
>>382 >>383 を検証してみました。
Const STR_LEN = 100: Const NUM = 10000
Dim Col As New Collection
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
Dim QPF As Double
Function QueryPerformanceTime() As Double
Dim Q As Currency: QueryPerformanceCounter Q: QueryPerformanceTime = Q / QPF
End Function
Function RndStr() As String
Dim Length As Long, N As Long: Length = Int(Rnd * STR_LEN)
For N = 0 To Length: RndStr = RndStr + Chr$(65 + Int(Rnd * 26)): Next
End Function
397 :
380 :2012/07/04(水) 10:30:57.65
Private Sub Form_Load() Dim Q As Currency: QueryPerformanceFrequency Q: QPF = Q Dim N As Long, Tmp As String, Result As String, Start As Double ReDim Ary(NUM - 1) As String For N = 0 To NUM - 1: Tmp = RndStr: List1.AddItem Tmp: Col.Add Tmp: Next Start = QueryPerformanceTime: Result = List1.List(0) For N = 1 To NUM - 1: Result = Result & " " & List1.List(N): Next Debug.Print "リスト連結ループ: " & (QueryPerformanceTime - Start) Start = QueryPerformanceTime: Result = Col(1) For N = 2 To NUM: Result = Result & " " & Col(N): Next Debug.Print "コレクション連結ループ: " & (QueryPerformanceTime - Start) Start = QueryPerformanceTime For N = 0 To NUM - 1: Ary(N) = List1.List(N): Next Result = Join(Ary, " ") Debug.Print "リスト→配列→Join: " & (QueryPerformanceTime - Start) Start = QueryPerformanceTime For N = 0 To NUM - 1: Ary(N) = Col(N + 1): Next Result = Join(Ary, " ") Debug.Print "コレクション→配列→Join: " & (QueryPerformanceTime - Start) End Sub
398 :
380 :2012/07/04(水) 10:32:16.66
リスト連結ループ: 5.54018901123163 コレクション連結ループ: 5.95872308630715 リスト→配列→Join: 1.69191073728143E-02 コレクション→配列→Join: .30237460158969 配列のほうが圧倒的でした。 中でどうなってるかよく分かりませんが、 連結ループは、(文字数×個数)^2のオーダー? 配列JOINは、文字数×個数×2? Cでやると、文字数×個数×1でできそうな気がしないでもない。 APIでリストボックス要素の文字数をO(1)オーダーで取得できますか?
>>395 それは移行済みのやつらが上から目線でいう言葉
>>398 そりゃ、ループの内側で1ループあたりコントロールに2回もアクセスすりゃ当然だろ。
意図して差をつけたかったんだろ?察してやれ。
たしか前にテスト用のテキスト生成するコードがこのスレに挙げられてたよな Stringの&連結ではなくJoinで一気に生成してたような
わざとマーシャリングを発生させるとかもうね・・・。 オワットル
404 :
デフォルトの名無しさん :2012/07/04(水) 13:41:23.43
>>403 マーシャってフジテレビの歌が上手な女子アナ?
Colの参照2回かよ?
正しい例を
408 :
380 :2012/07/04(水) 16:14:34.65
>>400 >>401 >>405 すいません、どこが2回アクセスに相当するのか教えていただけませんか。
For N = 1 To NUM - 1
Result = Result & " " & List1.List(N)
Next
For N = 2 To NUM
Result = Result & " " & Col(N)
Next
VBのコードが、Cのコードでどういう風に表現されるのかよく分からないもので…
>>403 マーシャリングは標準EXEでも発生するのですか?
マーシャリングしないようにするためには、どのように書けば良いですか?
標準コントロールがどういうものか分かってないらしい。
いや、どちらかといえばVB6でのコレクションの参照の方が問題だろ?
韓国教授(88)が告白 「殺される覚悟で言う。韓国人は強制従軍慰安とか歴史捏造をやめるべきだ」 ★2
http://engawa.2ch.net/test/read.cgi/poverty/1341400277/ http://yeoksa.blog.fc2.com/page-0.html 韓国の88歳の大学教授がハングルで書いた文章です。日本語訳します。
"私は88才です。 もう事実を話したいと思います。" [チェ・キホ伽耶大学客員教授]
朝鮮末期の私は1923年の生まれです。 もう韓国のためでも、日本のためでもなく「事実」を話したいと思います。
それは相当な覚悟が必要です。 生命の危険も覚悟しています。 しかし、これは私の使命であると信じています。
私はソウルに住んでいました。 そして、時々、平壌や東京に行きました。 その当時の韓国人は「日本人以上の日本人」でした。
「親切でやさしい日本人」という印象を、必死に消すために「反日」を指導者はそそのかしてきました。
韓国と日本の歴史教育を比較すると、日本が10%の歪曲といえば、韓国は90%が歪曲です。
朝鮮末期の正常ではないで政治腐敗を教えず、日本が関与しなければ独立ができたことのように使われています。
韓日合邦によって「教育」 「医療」 「工業」 「社会インフラ」が整備されました。近代国家の基礎が出来たことは明らかな事実です。
その実績を「日本帝国主義の侵略政策の産物だ!」と糾弾する韓国にはあきれます。 より一層「日帝が民族産業を停滞させた!」
という主張にはコメントする気持ちもなくなります。
民族産業を殺したのは、朝鮮王朝です。 近代化を主張する先進的な思想家は反逆者とし、親族までも処刑されました。
韓国人は「日帝の虐待! 性奴隷!」と叫んでいますが、私は信じることができません。 歴史の真実を知っているためです。
朝鮮語でキウン「地獄」でした。 それは大韓帝国時代になっても同じでした。
1904年、日本は朝鮮の惨状を救うために、財政支援を決断します。
例えば1907年度、朝鮮王朝の歳入は748万円だったが、歳出は3000万円以上でした。
その差額は日本が負担していました。 1908年にはより一層増加し、3100万円を支出しています。
現在88才の老人の絶叫です。 どう思われますか?
ネトウヨきもっ、まで読んだ。
414 :
デフォルトの名無しさん :2012/07/04(水) 22:31:56.32
For N = 1 To NUM - 1 Result = Result & " " & List1.List(N) Next For N = 2 To NUM Result = Result & " " & Col(N) Next どうでもいいがインデントくらい付けろや。 お得意のCやC++でもスットンなコーディングしてるんやろか?
>>414 統合失調さん?それとも単純に頭がおかしいのか?
唐突に何を言ってるんだ
あらあら、張り付いてたのね? へんたいwww
ネスティングも一列に頭揃えて書いてそw
418 :
デフォルトの名無しさん :2012/07/04(水) 23:07:10.65
void foo (void) { Foo(); if (CONDITION){ bar(); } Bar(); }
こ、こぇ~w
猫ひろし+鳥羽一郎÷2=出村課長?
2chにそのままコード貼り付けたら 半角スペースやタブは削除されるから インデント無くなるのはふつうだろ
下手な言い訳数ウチャ当たるってか?
423 :
デフォルトの名無しさん :2012/07/04(水) 23:40:27.26
>>421 コラ!開き直るな!
それを考慮して見やすいコーディングが出来なかった
己の無力さを恥じよ!
VB6でWindows 8のような横に画面がスライドして減速しながら止まるようなデザインは可能ですか? どうしてもやってほしいというクライアントがいて困っています。 よろしくお願い致しますm(_ _)m
画面がスライドして減速しながら止まるようなコードを書けばいいのでは?
えっ
具体的にって、まさかコード要求してるのか? おまえの仕事をロハで俺らにやれと?
えっじゃねーだろ?言ったからにはコードサンプル提示するのがマナー
>>429 出来る奴ならそんな事をグダグダ言ったりせずにコードをすらっと書いて終わる。
何もできない4流プログラマが自分のスキルの無さをグダグダと垂れ流し続けるものさ。
VB6ごときに出来る事には限界がある。
>>429 ロハって久々に聞いた
Windows8は知らないがフォームを動かしたいのなら
タイマーで適当にMe.Moveの座標をずらしていけばよかろう
X=X+増分
の増分の値を段々減らしていけば原則したように見える。
ただ標準的な物と違うことをやると絶対違和感感じてくるから
頭を冷やしてもらうか素直にWindows8にリプレース案件出してもらうかだな
>>432 Windows 8って言ってんだから動かしたいのはフォームじゃなく画面上の画像だろ?
例えばフルスクリーン全体を黒一色にして、フォルダ内の画像を左右に
速度変化を持たせてスライドする感じだろうか。
仕事でも顧客の要求事項をくみ取れない社員がいて困るが
ネットでも同類項に遭遇するとは余程俺の人運はないんだろうなw
434 :
デフォルトの名無しさん :2012/07/05(木) 11:03:21.18
初速に応じて減速カーブが変化するから物理特性を持たせる必要がある。 物理数学に弱い人だと組めないだろうね。 面倒だから動作プラットフォームをWindows 8限定にすれば デフォでその機能が付いてくるんだけど それじゃダメなのかな?w
435 :
380 :2012/07/05(木) 12:13:12.40
>>409 >>410 どういう問題があるのか教えていただけませんか?
Result = Result & " " & List1.List(N)と同じ効果で、
もっと高速な書き方があるなら、教えていただけませんか?
>>414 >>423 書き込み回数も文字数も行数も制限されているので
インデントや改行は勘弁してください。
436 :
デフォルトの名無しさん :2012/07/05(木) 12:16:32.90
慇懃無礼なやっちゃな・・
437 :
デフォルトの名無しさん :2012/07/05(木) 12:33:41.52
>>435 別に問題無いと思う。
ただ、インデントや改行は心掛けた方が良かろう。
元より連投してるのだから文字数や行数の制限とか
言い訳にもなっていない気が汁。
438 :
380 :2012/07/05(木) 13:07:45.67
以前4回までしか書けなかったことと、 連投ではなくて、単位時間あたり何回と決まっているようだったので、 誰かが書いてもレスできなくなる可能性を考慮して 3回で収めさせていただきました。 見にくくてすいませんでした。
そんなに間髪入れずに書き込みされるほど勢いのあるスレでもないでしょうに。。。 でも、あまり気にしないでね。あなたは悪い事は何もしていないのだから。
> あなたは悪い事は何もしていないのだから。 ゴミのポイ捨てぐらいしてるだろ。
441 :
デフォルトの名無しさん :2012/07/07(土) 11:41:35.49
getbitsをVB6でコーディングするとどうなりますか? unsigned getbits(unsigned x, int p, int n) { return (x >> (p + 1 - n)) & ~(~0 << n); } VB.netだとシフト演算子があるのですが…。
手元にVB6が無いので動作するか試せない Function getbits(x as Long, p as Integer, n Integer) as Long getbits = Int(x / (2 ^ (p - n + 1))) And (2 ^ n - 1); End Function
横レスだが unsignedとLongの違いは大丈夫なん?
VB6の簡単なコードってVBAかVBSの実行環境あれば試せる?
何か変だと思うこのコード
>>441 っていうか、pだのnだの適当な名前付けるなよ
>>445 変数名が変わったくらいでオタオタしてしまう初心者かよ?
恥ずかしいなw
>>446 カーニハン&リッチ型に合致しないとエラーになる値なんだろうよwwww
>>442 ビルドしたらエラーが出た。
理由の1つは末尾のセミコロン。
さて、もう一つはなんでしょうか?
引数のn IntegerになっててAsが抜けてる
~(~0 << n); → (2 ^ n - 1) の下りは流石だが Int(x / (2 ^ (p - n + 1))) は x \ (2 ^ (p - n + 1)) 方うが良かったかも。
~(~0 << n); → (2 ^ n - 1) これ違うくね? 前者は0の反転をnビット左シフトして反転でしょ? 後者は1をnビット左シフトじゃね?
Int(a / b) と a \ b はどちらのほうが処理が速いのだろうか
458 :
デフォルトの名無しさん :2012/07/07(土) 15:07:26.91
頭の悪い奴がチーム内にいると苦労が絶えない
>>454 どっとにしろそれでは算術シフトになってしまうから正しくないな
っていうか、だからそもそも
>>441 のコードは何がしたいんだ?
意味あるのかこんな処理
>>457 Start = QueryPerformanceTime
n = 0
For p = 0 To 65535
Int(x / (2 ^ (p - n + 1)))
n = n + 1
Next
n = 0
Debug.Print "Int ループ: " & (QueryPerformanceTime - Start)
For p = 0 To 65535
x \ (2 ^ (p - n + 1))
n = n + 1
Next
Debug.Print "\ ループ: " & (QueryPerformanceTime - Start)
Int ループ: 4.37367566178261
\ ループ: 1.41347460158969
随分違うものだな。
>>463 C言語の教科書に載ってるだろ。バカかこいつら?www
さすがVB6の巣窟だけあってバカばっかりだなw
なるほど、
>>465 にとってはK&R(C言語の教科書てw)の内容を覚えていることが
バカでない条件なのか。
ずいぶんと馬鹿っぽい定義だな。
>>466 問題あるよ。
算術シフトって意味分かってる?
>>469 結果的に正しい解になるから問題無いんじゃない?
しかし、確かに手元のK&Rに
>>441 のコードが乗っているが、このPってのは
取り出すビットのMSBの位置を指定するんだな。
意味が分からないわけだ。普通はLSBだよな。
前からK&Rなんて過剰評価以外の何でもないと思ってるけどこの仕様は非常識過ぎる。
>>470 MSBが1だと正しい答えになりませんよ。
position の p じゃないの?
>>470 いや、今の小学校の算数の授業では
【問】
太郎くんが1本20円の鉛筆を8本買いました。お店にいくら払えば良いですか?
【答】
20円 × 8本 = 160円
この時、答えが160円でも式が8 × 20だと不正解になる。
C言語で同じことをやったら問題になるな。VB6はある意味アホだからなw
ならへんて。だから算術シフトと論理シフトの違い分かってます?
符号ビットの処理が
この場合、VB6でサインビットがどうなるか、実際にウォッチして見てみれば問題無い事がわかるよ。
getbits(-12345, 2,5)
xにLongの範囲内で与えられる最大の正数を指定する限り算術シフトでも問題ない
元の
>>441 の関数がxに負数を受け取らないわけだから、
>>442 に負数を与えることもないから符号ビットの問題は無い
ただ扱える正数の範囲が狭まるがな
>>443 は
>>443 でずれてるけどね。
VBには符号なしの組み込み型がないのだからsignedな型で代用するのは仕方がない。
問題はsignedな型のMSBの挙動を意識したコーディングをしてないこと。
>>482 負にはならないよ。VB6を知らないねあなた?w
>>484 MSBの挙動を意識しなくても結果的にunsignedと同じ解になるだろって言ってんだが?
xに 1101 1011 1100 1111 1000 0110 0000 1111 (2) を与える場合 unsigned int と Long では
>>483 アホだねえ。
>>441 のようなコードを移植する場合、VBではLongをビットイメージとして使うのであって
LongをLongとして使うのではない。
>>483 の書くコードって、例えばWin32な関数からもらったハンドがル0x800000
より大きかったら受け取りを拒否するのかねw
492 :
デフォルトの名無しさん :2012/07/07(土) 15:55:12.15
>>490 それもいいが、が逆にどう書けば正常に動くか聞いてみたいと思わん?
たぶん爆笑してしまいそうな予感wwww
VB6は使う演算子によって変数の型が変わるからね。
x = 0x91817161; p = 31; n = 8;
VB6で同じ結果になることを確認。
Public Function getbits(x As Long, p As Integer, n As Integer) As Long
getbits = (x \ (2 ^ (p - n + 1))) And (2 ^ n - 1)
End Function
だと
>>494 の結果が&H92になる
左シフトに<<と<<<の論理と算術の区別はあるが 右シフトには>>しか存在しない、つまりこういうことだ
498 :
デフォルトの名無しさん :2012/07/07(土) 16:11:53.78
つまり問題無し
printf("%H\n", getbits(0x91817161, 31, 8)); Debug.Print Hex$(getbits(&H91817161&, 31, 8))
Debug.Printだと負値で表示されるよ?もっと工夫しないと。
printf("%H\n", getbits(0x91817161, 31, 8)); ~~ なにこれ
>>501 %xのつもりだろ?VB6ユーザーなんてその程度の代物ですwww
>>500 それはDebug.Printの仕様であって演算結果の問題ではない
x as Long だから問題無いでしょ? C言語の方はunsigned intであることから最大値は65535なのだから。 マジで頭悪いのかこいつら?
506 :
デフォルトの名無しさん :2012/07/07(土) 17:34:26.64
xが負値になり得ないという理屈がわからないのでは?
>>504 C言語 VB6
char Byte
short Integer
int Long
long ?
C言語のint型が4バイトだと決まっているわけではない
>>441 のケースではunsigned int型は2バイト整数だからVBのLog型で十分対応可能だ
510 :
デフォルトの名無しさん :2012/07/07(土) 17:39:02.85
>>504 int方が16ビットという決め打ちは危険。
32ビット環境ではint型は32ビットだから問題アリということになるだろ?
まあ、題材がK&Rのgetbitsだって前提を理解してる人としていない人との
見解の相違ってとこじゃないだろうか。K&Rの時代は32ビットCPUは存在しなかったし。
結局どちらの言い分も正しかったわけだな。この辺んで仲直りしろよ。 みんな仲良く三流プログラマー同志wwww
64bitマシンだとint型も64bitか
>>512 いや、64bitの場合は明示的に区別するから問題ない。
int = 64bit はあまりに危険すぎるのでw
出かけて帰ってきたらこのスレすごい伸びてるなぁ 完全移植なんて無理だからビットシフトの方法だけ書けばよかったと後悔
最近このスレよく伸びるネ
なんだかんだ言ってVB6ぷろぐらまーが こんなに居て安心した休日の夕刻
>>514 ちょっと問題がありましたけど、見事に動きました。
スキルの高い人がいて助かりましたm(_ _)m
礼など要らん
520 :
253 :2012/07/08(日) 05:28:24.63
さっき、軽はずみで最新のDirectX SDKをインストールしたらVB6 & DX8で作ったアプリ他、古いDX使ってるフリーソフトとかも正常に動くようになった 何でだろ、まぁ結果オーライでハッピーだ
世間には俺より詳しい奴なんていくらでも居るのに、 何故かこのスレには俺より詳しい奴が一人も居ない不思議
本当に詳しい奴は このスレで得られる情報は何もないってわかっているんだろう
>>522 ハゲドウ
でも教えたがり屋の人が舞い降りてくれると思うんだけどね。
知恵袋先生みたいに。
それなら もっとまともなフォーラムのほうへ行ってるだろ
(キリッ を付けるの忘れてますよw しかし、本人たぶんドヤ顔で張ってるんだろうけど、こういう虎の威を借りて 何かの集団を見下すって日本の左巻きの伝統芸能だな。 頭悪いネトウヨも鬱陶しいがこういう卑しい奴もいやだね
> (キリッ > を付けるの忘れてますよw それ、自嘲ですか?w
>世間には俺より詳しい奴なんていくらでも居るのに、 >何故かこのスレには俺より詳しい奴が一人も居ない不思議 この人何に詳しい人なんだろ?おまんこかな?w
529 :
デフォルトの名無しさん :2012/07/09(月) 20:13:29.36
>>525 今どきどこのフォーラムもVB6の質問なんてまともに取り上げてくれないよ。
頼りになるのはこのスレと魔界の仮面弁士さんくらいのもの。
531 :
デフォルトの名無しさん :2012/07/09(月) 21:03:36.95
>>530 「GOTOの代わりになる命令」
この明らかにバカにした質問に対する親切杉る回答を見て
まさに目から鱗が落ちる思いだった。
それに比べるとこのスレはホント糞だわ。
何もできないアホが「俺こそが一番詳しい」と言い放つ。
あー、見てらんないw
自傷行為はやめなさい
自傷行為(じしょうこうい)とは自らの身体を意識的・無意識的に拘らず傷つける事を言う。 日本ではリストカットが有名である。虐待のトラウマや心理的虐待及び摂食障害、 低い自尊心や完璧主義と正の相関関係があると考えられている。自傷行為は多くの場合文化的タブーとされる。
環境はWindows7 Excel2007のVBAですが、直接Excelとは関係無い質問はこちらに、 との事ですので質問させて頂きます。 連想配列の値を配列にした場合、 その配列の要素を簡単には変更できずに困っています。 '====================================================== Dim hashObj(10) As Object Dim tmpArray() As Double ReDim tmpArray(100,100) For i = 0 To 10 Set hashObj(i) = CreateObject("Scripting.Dictionary") hashObj(i).Add "hogehoge", tmpArray '連想配列の値に配列をセット Next i '連想配列の値の配列の1要素を直接編集することは出来ない。 hashObj(0)("hogehoge")(0, 0) = 100 MsgBox hashObj(0)("hogehoge")(0, 0) '0が表示 '配列毎更新すれば変更可 Dim varTmp As Variant varTmp = hashObj(0)("hogehoge") varTmp(0, 0) = 100 hashObj(0)("hogehoge") = varTmp MsgBox hashObj(0)("hogehoge")(0, 0) '100が表示 '====================================================== 配列ごと置き換えれば一応編集は可能なのですが、1要素書き換えるだけなのに、 配列全体を更新するのは、処理速度上でかなりのボトルネックになってしまっています。 簡単に1要素だけ編集することはできないでしょうか?
見たことない構文だと思ったら 俺はVBAは使ったことないせいか
>>534 こんなクラス(Class1)を用意して
Private tmpArray() As Double
Private Sub Class_Initialize()
ReDim tmpArray(100, 100)
End Sub
Public Property Get Item(x As Long, y As Long) As Double
Item = tmpArray(x, y)
End Property
Public Property Let Item(x As Long, y As Long, New_Value As Double)
tmpArray(x, y) = New_Value
End Property
こうするとか
Dim hashObj(10) As Variant
Dim i As Long
For i = 0 To 10
Set hashObj(i) = CreateObject("Scripting.Dictionary")
hashObj(i).Add "hogehoge", New Class1
Next i
hashObj(0)("hogehoge").Item(0, 0) = 100
MsgBox hashObj(0)("hogehoge").Item(0, 0)
連想配列って何? VB6しか知らないおいらに優しく説明してくんろ。
他の言語からすれば、配列の参照やポインタを格納してるつもりなんだろうけど Dictionary.Addは配列の参照ではなく、コピーを格納するし、 Dictionary,Itemは格納された配列の参照ではなく、コピーを返すんじゃないかね。 tmpArrayも2次元Dictionaryにしちゃえば? あと、速度を気にするなら、Microsoft Scripting Runtimeを参照設定して hashObj(10) As Dictionaryしたほうがいい。
540 :
デフォルトの名無しさん :2012/07/11(水) 13:17:24.21
環境はWindowsXP Excel2003です。私も直接Excelとは関係無い質問はこちらに、
との事ですので質問させて頂きます。
ieの画面操作で困っています。
操作したいie画面は左右にフレームが分割されているもので、左側に
メニューが並んでおり、そのメニューをクリックすると、右フレームに
そのメニューに応じた画面が表示されるというものです。
ie画面操作を自動化したいのですが、このメニュー選択の部分が突破
できずにいます。左フレームのソースのリンク先を使って、以下の
マクロを書いたのですが
Dim objShell As Object
Dim IEurl As String
Set objShell = CreateObject("WScript.Shell")
IEurl = "
http://******************** "
objShell.Run IEurl
このマクロでは、右フレーム上に画面を開くことができずに
「不正な画面遷移が検出されました」と分割フレームが消えて
全面に表示されてしまいます。
尚、クッキーを引継ぐ必要があるので、WScript.Shellを使っています。
objShell.Run IEurl の部分でカレントフレームを指定するなどが
できないでしょうか?Runの前(又は後)に「.~」と何か挿入するとか・・。
frame(0)などを入れてもうまく行きません。
どなたかie画面操作に詳しい方、レスお願い致します。
まずそのURL直接IEで開いてちゃんと表示されるんだろうな?
542 :
デフォルトの名無しさん :2012/07/11(水) 14:22:46.62
残念ながらそのURLは直接開くことはできない様になっています。 このメニュー画面からでないと開けません。
直接開けないURLは手でやろうがプログラムからやろうが開けません
ダイレクトに開けないページってrefererとかcookieとか使ってるんじゃねの
546 :
デフォルトの名無しさん :2012/07/11(水) 15:09:17.30
こんなの俺ならちょちょいのちょいでできるのにな 掲示板でのやりとりじゃ面倒だから何もしないけど。
できないとすなおにいえばかわいいものを
いやできるよ
550 :
デフォルトの名無しさん :2012/07/11(水) 15:26:49.29
そうですよね。分かれば簡単なはずですよね。 私ははじめてあまり時間が経っていないのもあって 苦戦しています。(涙)
551 :
デフォルトの名無しさん :2012/07/11(水) 15:29:14.29
そうですよね。分かれば簡単なはずですよね。 私ははじめてあまり時間が経っていないのもあって 苦戦しています。(涙)
なぜれんとうするのかいみふめい
つーかさ、まずその対象URLを書こうよ 相手から無償で情報を提供して貰おうとするものが 自分の情報を隠すなんて失礼極まりないだろ 直接開けないところをどうにかしようとしているなら それが可能であってもソースが分からないことには何も出来ないし
みもとがばれてしまうからふつうかけないでしょう
555 :
デフォルトの名無しさん :2012/07/11(水) 16:02:19.17
すみません。連投は操作ミスです。 URLはイントラの仕組みなので・・・。 ソースの公開もさすがにまずいのでご理解下さい しかし、言われることは良く理解できます。
りかいできるだけではさきにすすまんのだが
まずはそのイントラシステムの模倣システムを インターネット上に公開しないと話にならないな
対象のURLがわかれば出来ると思う。 てかメックでも使ったほうがはるかにラクな気がするのはきのせいか
サーバ側の仕様がわからんのに、出来るか出来ないかは判断できない まずサーバ側の管理者に、アクセスするための手順を教えてもらえ あとはそれをその通りプログラムするだけだから、その手順をここで公開しろ
こういうときこそWinHTTPを使うんだお!
なんだそれは
そーです。わたしが
>>537 なるほど、クラスを値にすれば良かったのですね。
計算コストが1/4程になりました。有り難う御座いました。
>>539 2次元Dictionaryだと、今度はメモリ消費の観点から厳しそうです。
現状のDouble型でも300MBほど使ってしまっていますので・・・
参照設定の方は、是非試させて頂きます。
コピペマン参上!まで読んだ。
>>564 なんかVB6ユーザ-の目をLightSwitchに向けさせたいだけみたいだけど
俺らがVB6を使ってるのはそんな理由じゃないんだが?
単に他の言語を習得する余裕がないだけの話www
それでメシ食っていけるなんて、心底うらやましい
>>567 医療系なんだけど、8年前にVB6でサーバーサイドActiveXとSQL Serverを使ってDICOMサーバーを作りましてね、、
I社とかT社とかP社とかH社とかとのシステムと相互接続して互換性を高めるためにサブシステムを色々作っていくうちに、
なんと今ではほぼ日本にあるすべての医療メーカーの医療機器(モダリティ)やDICOMサーバーと卒なく通信できる
とんでもない代物になってしまった。
DICOMって互換性があるように言われてるけど実際は嘘八百で何もせずにそのままデータが受け渡しできることなんて
ほとんどないのです。通常は数百万円もするゲートウェイを使ってDICOMを書き換えて通信できるように調整したり
めちゃめちゃ高い料金取るメーカーのサポートにお願いすれば大抵は調整してもらえるようなかんじ。
それがそのVB6で作ったDICOMサーバーとサブシステム、いわゆるPACSは、高価なDICOMゲートウェイやDICOMルーター
を必要とせず、そのソフト一本でどのメーカーとも接続できてしまうようになってしまった。ニッチを狙ったビジネスが
今や敵対メーカーもないままこのソフト一本で年商30億を維持できるようになった。
8年間の積み重ねで作ったシステムって、そう簡単に他の言語に切り替えられるもんじゃないし、その必要もないし
殿様商売なもんで、自己啓発や向上心なんてとうの昔にどこかへ忘れて来たしで・・・今もVB6オンリーって訳です^^;
スッゲー
570 :
デフォルトの名無しさん :2012/07/13(金) 22:54:28.70
>>568 テリオスか。。。
医療界では伝説だよね。
>>568 いずれサーバーのリプレースでOSとか
入れ替えざるを得ない時どうなるのかね
技術者が日本よりレベル高そうな
海外でもそうなんだなー。
日本では技術的な問題より規模的な問題で
VB6のポトペタ+コピペーコードで十分だよ、って状況が多いような気がする。
画面にボタンと入力欄を用意して6機能ぐらい動く、みたいな
言語ってそういうものかもしれないな。 極めるくらいまで突き詰めればどの言語も大差ないのかもしれない。 ちゃんとそういう人々をサポートしてほしいよね。もったいない。
VB6は守備範囲が広いからね。 視点がどうしてもデスクトップに行ってしまいがちだが VB6で作られたサーバーアプリって実は企業にはたくさんある。 VB6を見ているとJAVAが不滅なのと似ている気がする。 JAVAはデスクトップでのシェアは全然獲得できなかったけど サーバーサイドではスケーラビリティの点で評価され一定のシェアを築いた。 VB6ってIntel PCプラットフォームだけでしか使えないのに これだけのシェアを確保したって事はある意味すごいような気がする。 60歳超えたおっさんが保守できる言語ってそうあまりないだろうし。
Windows 8ではランタイムがサポートされたけど サーバーはどうなんだろうね。 Windows 2008 Server R2まではどうにかこぎつけたけど・・。
575 :
デフォルトの名無しさん :2012/07/15(日) 04:50:01.94
与えられたシステムを組むだけのIT土方はどんどん新しい言語を習得すればいいけど 本業がプログラマじゃない人は本業の方で手一杯だよね 苦労して新しい言語を習得してもそれが数年後には消滅してる可能性もあるし
だからJava使っておけばいい。 これからも安泰な 一番使われてる言語
>>572 さんざん使い倒した人が、どの言語も大差ないって言うのはわかるが…
前スレだったかな。
IfとかForの制御文のみをもってして、どの言語も大差ない的な書き込みが
あってさ。いや、制御文レベルじゃ大差ないだろうけど。
さんざん使い倒した人はそんなこと絶対に言いませんw
Windows環境においてはVBが普及したため JavaでGUIを作ると変な顔されることに。 COMコンポーネントのコントローラとしてちょうどいいんだなあ VBScriptとVBAがある限り当分なくならないな
まあ、クライアントもサーバーもWindowsだと Javaじゃなけりゃいけない理由てのが無いしな
581 :
デフォルトの名無しさん :2012/07/17(火) 09:18:33.10
>>580 理由がないなんて生ぬるいよ。
Windowsが急に重くなってマウスも反応しなくなるっつーから
まーたUSB系のトロイにでも感染したかと思ってい行ったら
JAVAランタイムがCPU負荷100%だったなんてことがよくある。
どうしてもJAVAプラットフォームが必要な業務ソフトでもあるのなら仕方ないが
DNSサーバーのためにJAVA入れてる人とか見ると
なんて非効率な事やってるのかと笑えてくる。まさに糞JAVAwww
最近深刻なのが.netの脆弱性を突くワームだよ。
ブラウザ開くだけで感染し、ファイアーウォールを設定していても感染する。
そして駆除がまた難しい。定石のレジストリのRUN起動ではなく
アセンブリのDesktop.iniを書き換えて発動するから、パニックになる人が多い。
JAVAも.netもシステムを管理する側からすると糞みたいなそんざい。
フレームワークなど一切使用せずに動くプログラムだけにしてほしいよ。
おれが組むわけじゃないからwww
Frameworkなしでプログラミングできる人なんて 今の時代は組み込み屋くらいしかいないだろう?
どいつもこいつもコード書かせるとブロック内に必ず try, catch, finally が存在していてきもちわるい。
584 :
デフォルトの名無しさん :2012/07/17(火) 13:02:25.17
Javaで書くとWindowsで開発しても、完成と同時に自動的にMac、Linux対応になるから嬉しい。 なんか自分で対応させたかのように見えるのが気持ちいいのさ。
.NET FrameworkとJavaは似てるよね VB6が好きな趣味グラマより
>>585 .NET Frameworkが必要ないVB6は配布時に楽でいい。
XP以降が前提なら標準的なランタイムは最初から入っているしね。
単純なプログラムならEXEだけの配布でも動く。
それに引き替え.NETはたとえHello, World!!のプログラムだけでも
ビルドに合致した.NET Frameworkの配布が必要となる。
Win 7専用とすれば3.5は入っていることが約束されると思ってるだろうが
2.0の再構築時にウザイから削除してるケースが多いんだよね。
Javaにしたって最初からJavaVMがインストールされてるとは限らないわけだし
俺はJava便利だと思うが。 というより、Eclipseが便利と言った方が適切か。 Javaの構成とかがガッチリしてるから Eclipseでの扱いが楽なんだろうけど。 コードアシストは当然として、 try catchとか調べなくても囲んでくれるし。 アクセッサも自動生成してくれるし。 依存関係調べるツールも便利だし。 なんか欲しいプラグインってたいていあるし。
VB系はIDEが選べないってのが問題ってとこなの?
>>588 VSのコードスニペットを知ったらそんなのゴミと化すよw
Javaも.NETFrameworkも中間言語コード生成で動かす んでJavaはJava言語から中間言語コード生成して .NETFrameworkはVB、VC++、VC#から中間言語コード生成するわけだ おまえらが頑張ってVB6のソースコードからそれらの中間言語コードを吐くプログラムを作ればいいんだよ
VB6からVB.NETへのソース変換のほうがまだ現実味があるな
>>591 同列に扱うなよ。効率が全然違う。JAVAはスケーラビリティに優るが
実効効率では.netの足元にも及ばん。ハードの性能で百何隠すのが吉。
携帯とかタブレットでは開発環境的にもJAVAが良い。
中間コードの性質が違うからな .NETはWindows上であることが前提のだし
EcmaだのECMAだのmonoだのは死ねってか
VB6を使うのは ・アプリとしての使用感や実行性能 ・慣れた言語であるなど開発のしやすさ 後者の場合のみで前者としての価値がないのなら VB6のコードから.NETの中間バイナリでも生成するコンパイラでも作るべき
>>594 そういう話じゃない。
そもそも中間コードって表現もどうかと思うが...
.NETとJAVAを両方やって気づくJAVAの問題はいろいろあるけど、
パフォーマンスの観点から言えば
(1) 値型がない
(2) ジェネリックの仕様
この2点が大きいと思う。
>>596 後者のみならVB10を使えば済む。
さんざん既出だと思うけど、相違点なんて実はたいしたことない。
そういうこと書いてるとまたわんくまの例の記事のリンクをコピペしちゃうよw
最近VB2010Express使ってみたけど .NETとVB6以前ではかなり違いがあるように感じたけど BasicってよりJavaっぽいコーディングだし
>>596 VB6はガベコレでメモリの解放は行うが
再配置をしないのでサクサク動作するっていう
特長を捨てるのもどうかと思うが。
JVMも.NETもこの点では再配置時の停止時間は
避けきれてない。
>>600 VB6にガベコレあったっけ?
明示的にnothingを代入して解放せにゃならんかったと思ったが?
プロセスのメモリの事ならVB6に限らずEXEなら終了時にWindowsが勝手に開放するが。
>>601 ランタイム内部で何かやってそうな感じではあるけどな。
INSIDE VB6とか読んでる人じゃないとこの辺はちょっちねーーーw
知らないなら黙っててください
知らぬが仏って事もあるしなー
それは知ってる奴が言うセリフだろ。
知ってるさ。少なくとも君よりはね。日本語版にローカライズした一人だし。
明示的nothing代入しなくてもプロシージャから抜ければ勝手にメモリから解放されるんじゃないの?
ガベージコレクションと、スコープを外れたときに変数領域が使用中から未使用になるというのは、 別の問題じゃないかな。 VB6は、スコープを外れれば使用中の変数領域は未使用状態になるので、関数の終わりでnothingを 代入する必要は全くない。 が、その未使用状態になった領域がGCされるかどうかは知らない。
610 :
デフォルトの名無しさん :2012/07/18(水) 16:07:39.66
>>607 それがガベージコレクションなら、標準C言語もガベージコレクションを搭載していることになるぜ?
冗談で言ってるのだと思うが、時々マジで変な事を自信満々に言う子がいるのでびっくりする。
>>607 プロシージャ―内でNewしたクラスをそのまま解放せずプロシージャ―を抜ければ
そのクラスもメモリーから解放されるとか思っているなら終わっているよキミは。
612 :
デフォルトの名無しさん :2012/07/18(水) 16:12:25.88
.netでは明示的に開放しなければならないところとガベージコレクションに任せて開放してはならないところがあるのが難しい。 未だによくわからなくてエラーになる。その点VB6は分かり安くていい。解放忘れてもそれなりに動くしねwww
>>611 マジで言ってるのかどうか、判断に苦しむが…。
Newされたインスタンスは、それを保存する変数のスコープがプロシージャレベルなら、
プロシージャを抜けると解放されるよ。
614 :
デフォルトの名無しさん :2012/07/18(水) 16:46:50.29
>>613 BoundsCheckerで確認した限りでは解放されませんが何か?
あとFormも問題があるね。モーダルフォームは明示的にNothingを代入しても
メモリから消えない事がある。理由はわかっているが。
MSDNがアナウンスしている公式情報は嘘ばっかりだす。時々誤訳で意味が正反対なんてこともあるだす。 「こうなります」と書いてあって信じてやってみたら実は全然違ってたなんて事があるのがデフォだす。 実際に自分の目で確かめてはじめて真実を得ることができるのはVB6に限らずMS製品全般に言えることだす。
>>614 何を持って「解放された」と定義するのかってことだと思う。
Nothingを代入すべきかどうかという文脈で言うと、プロシージャレベルのスコープの変数に保存された
インスタンスは、Nothingを代入せずともスコープを抜ければデストラクタ(Class_Terminate)が走る。
これを「解放された」と表現するなら、解放されたということになる。
VB6用のBoundsCheckerは使ったことないけど、ひょっとしたら暗黙の解放(プロシージャを抜けると
行われる処理)と、明示的な解放(Nothingを代入)に違いがあったりするの?
>>613-614 Dim c As New Class1
と
Dim c As Class1
Set c = New Class1
の違いに関係なく解放されないの?
>>616 VB6のメモリー解放は実は単純じゃない。
明示的だろうが暗黙だろうが意図した通りに開放していないことが多い。
ただそれはコーディング上の工夫である程度緩和できる。
そういった問題を意識してコーディングする人とそうでない人のものでは
コード品質が大きく変わる。でもリスト上でそれを発見することは知ってないと無理。
エラーが出ずに動けば無問題と思うVB6プログラマーほど怖いものはないとおもいますよ。
その意味では.netの方が遥かに安全。あくまでメモリーリークの観点からだけだけれど。
>>617 関係ありません。迷わずNothingを代入して終わってください。
呼び出し側の状態によってはメモリが解放されない事があります。
そのまま何度もそのプロシージャを呼び出すと、終いに面白い事が起こります。
こうやって、実は全然必要無い「とりあえずNothing代入しとけ」というバッドノウハウは引き継がれていくのであった
>>618 > 明示的だろうが暗黙だろうが意図した通りに開放していないことが多い。
そうなの?
> ただそれはコーディング上の工夫である程度緩和できる。
どうやって?
> その意味では.netの方が遥かに安全。あくまでメモリーリークの観点からだけだけれど。
Newしたクラスもリークするの?
>>620 そう思ってろってば。確かに表面化するとは限らないから
今回大丈夫だったから次回も大丈夫理論でやってればいい。
疑心暗鬼になって色々調べている人は少なくないし
そういう人たちのいう事を信頼したところで痛い目には合わんだろうしね。
ご自由にどうぞw
>>621 どうやって?
そんな一言で言えるくらいならとっくに言ってるよ。
自分で色々調べてみなよ。
最終的にはランタイム以外はCで作ったライブラリなんだから。
VB6でデバッガというとウォッチが頭に浮かぶようではちょっと無理かも。
つまり、具体的には何も言えませんってってことだな 黙っとけ
Nothingを明示的に代入しても駄目なら、もう何しても駄目じゃん VB6を使わないって選択肢か無いよね
626 :
デフォルトの名無しさん :2012/07/18(水) 17:21:35.86
VB6がメモリーを開放しないのはある意味意図的なものがある。 恣意的に適当な事を言っているのではない事はわかるよ。 ただそこまで考えるとVB6の簡単さを失う事になる。 知らぬが仏ということもVB6にはアリではないかな?
Class_Terminateが動いても駄目って事なら、もう打つ手ないね
628 :
616 :2012/07/18(水) 17:26:46.21
誰が誰やらわからないが。 > VB6用のBoundsCheckerは使ったことないけど、ひょっとしたら暗黙の解放(プロシージャを抜けると > 行われる処理)と、明示的な解放(Nothingを代入)に違いがあったりするの? BoundsChecker使ってる人、これわかるなら教えてください。 俺はNothing不要派なんだけど、宗旨替えするかもしれない。
>>627 駄目なんじゃなくて、明示的にNothingしないとランタイムのメモリー解放タイミングに遅延がでるって事じゃないの?
コード上で今解放したと思っていても実はまだ解放されておらず、それを知らずに何度も呼び出したりすると最終的にあぼーんするとか。
どんな言語でもガベージコレクションのタイミングは不明確だから、たとえVB6であってもそれは例外でないって話でしょう?
630 :
デフォルトの名無しさん :2012/07/18(水) 17:35:30.89
>>628 > VB6用のBoundsChecker
そんなものあるのか?
俺はVC用のBoundsCheckerを使ってCコンパイル済みのVB6コードを追いかけて言っていたのだが?
何度も言うが、分からないなら騙されたと思ってプロシージャ―内でもClassをNothingすることだよ。
意味がないと思って勝手に端折るのは自由だけど、俺は裏を知ってるんでそんなコード書く奴を信用しない。
ただそれだけの事なので、各自自分の信仰する宗教を大切にしてほしい。
>>630 > そんなものあるのか?
うん、ある。
> 何度も言うが、分からないなら騙されたと思ってプロシージャ―内でもClassをNothingすることだよ。
騙されたくないので、暗黙的な解放と明示的な解放に差があるのかどうかが知りたいのだけど。
> 意味がないと思って勝手に端折るのは自由だけど
だから、明示的なNothingの代入がどういう意味を持つのかを知りたいんですが・・・。
その裏が具体的には何かを言わない奴www
>>630 あ、ごめん、VB6用のBoundsCheckerなんて無かった。
ググったときに見間違えた。
>>631 簡単に言うとClass_TerminateがAPIのメモリ開放を行わない事態が発生する。
理由は簡単で他のメモリ開放要求がAPIに対して行われると
スケジュールされてないメモリ開放がキャンセルされてしまう。
明示的にNothingを代入すればスケジュールされるので確実に開放が行われる。
グローバルヒープを直接操作するAPIとか使うときは特に注意すべし。
>>634 その主張と全く同じ内容のWebページを示すことができたら、信じてやっても良いよ
>>634 ほんとかそれ。
>グローバルヒープを直接操作するAPIとか使うときは特に注意すべし。
何関係無い話持ちだしてんだよwww
>>635 全ての情報がネット上にあるとか信じてるアホに用はないよ。こいつアホかよ?マジで・・・。
>>636 関係なくないよ。VB6からWin32 APIを直使うときはランタイムの処理との整合が取れずに問題になることがただでさえ多いんだけど。
サブクラス化とかいかにもヤバそうな実装が、意外に強固なほどに問題が無かったり今ひとつ不可解なVB6。
とにかく、おまじにとか言われていることを表面的な解釈で無視して良い事はない。これはVB6のすべてにおいて言える。
グローバルヒープとか言っちゃってる時点で、嘘がばればれなんだけど
>>637 >
>>635 > 全ての情報がネット上にあるとか信じてるアホに用はないよ。こいつアホかよ?マジで・・・。
既知の事実なら、誰かがネット上に公開してたり、どこかのスレッドで話題になってたりするだろアホ
お前の作り話じゃ無いなら、見つけて見ろ
BoundsCheckerのログで具体的に証拠を示してもいいぞ
> 関係なくないよ。VB6からWin32 APIを直使うときはランタイムの処理との整合が取れずに問題になることがただでさえ多いんだけど。
> サブクラス化とかいかにもヤバそうな実装が、意外に強固なほどに問題が無かったり今ひとつ不可解なVB6。
> とにかく、おまじにとか言われていることを表面的な解釈で無視して良い事はない。これはVB6のすべてにおいて言える。
何一つ具体的な話ができないんだな
>>637 スコープを外れたときにオブジェクトの参照カウンタが減らないというバグがVB5であって、
VB6ではそれがFixされたって知ってる?
Nothingを代入しとけってのは、VB5時代の話だよ。
Purifyだと暗黙的な解放と明示的な解放で差が出なかったわけだが
>>640 >Nothingを代入しとけってのは、VB5時代の話だよ
あらあら。何でも信じてしまう信者ばかりだとメーカーは楽でいいね。
Purifyとな?ヲワタwwww
PurifyってVC6用のシンボルプロファイル持ってたっけ?まさかアセンブラレベルでブレークセット? だったらスゲー。SoftIce級の人にはさすがに勝てん。ハッカーじゃないのでw
644 :
デフォルトの名無しさん :2012/07/18(水) 18:36:21.94
>>640 バーカ。参照カウンタとか何次元の違う話をしてんだよ?猿は去れ。
メモリリークってWinAPI叩いた時の話か? そんな話ならいくらでもリークさせることができるぞ でもそれNothingの代入と無関係だし もしVBの世界でNothingを代入しないことによりメモリリークが発生したら、 それはVBのバグって事になるんだが 残念ながらVBにもバグは存在しえて、なるべくそれを回避しましょうってのが Nothing代入推進派の一番の目的なんだよ
>>637 Win32APIを一切使わないコードだったら問題ないってこと?
訂正 Win32APIをDeclareで呼び出すようなことを一切使わないコードだったら問題ないってこと?
なんでそう極端なんだ?
10年以上前に終了した環境の話でよくそこまで盛り上がれるな
652 :
デフォルトの名無しさん :2012/07/18(水) 22:39:56.03
そりゃ10年以上の思い出があるから語り尽きることはないだろう
今の1/10以下のメモリ、1/1000のHDD、1/100000以下のCPU速度の時代でなんとかやってきたんだ とるにたりない事柄だよね
>>645 VB6にNothingを代入しないで
起こるメモリリークなんて無いよ。
塵も積もれば山となる。 些細なリークも1000万回ループすれば システムダウンを引き起こす。 いつの時代も本質は変わらんのだがね。
>>645 VB6にNothingを代入しないことで
起こるメモリリークのバグなんて無いよ。
自分で書いたコードのバグであることが全て。
>>654 10年前に終了した言語への入門者Welcome
10年前に卒業したってばさw Nothingを代入しないことで VB6のバグでメモリリークになることは ないってのが当時の結論。 今更蒸し返してどうする?
「メモリーリークなんて無いよ!」 見た事もない奴が見て来たかのように恣意的なカキコする昨今
Nothingを代入しないことで起こる メモリリークのバグって書いてるのに、 わざとらしく話をすり替えてるなw
メモリリークしてる? VBのバグだって? 違う、お・ま・えのバグだ。 何度こうやって初心者を叩き潰したことかw
モーダルフォームをNothingせずにOpen/Closeを1000回ループさせて 前後のメモリー消費量をかくにんしてごらん。 フォームにはボタンコントロールを最低1個、LoadイベントでEnableして UnloadイベントでDisable。それだけでいい。 まあ、こんなのは序の口。
>>663 はあ?どこがバグなの?坊やよいこだねんねしなー ってか?w
>>664 間違い指摘してやるから
再現するコード書いてみ。
ごめん、LoadイベントでEnabledをFalseに、UnloadイベントでEnabledをTrueだった。 最近.netオンリーなんでVB6を忘れてしまってたわw
>>665 へー、これだけ書いてあげてるのにコーディングできないんだ。
なんつー初心者。こいつVB6組めないくせに構ってほしくてレスしてる荒らしじゃん。
みんな相手スンナよ。
>>662 こういうこと?
Dim f As Form1, i As Integer
Set f = New Form1
For i = 1 to 1000
f.Show
f.Visible = False
Next i
Set f = Nothing
Dim f As Form1, i As Integer
For i = 1 to 1000
Set f = New Form1
f.Show
f.Visible = False
Set f = Nothing
Next i
>>667 えとな、ここに書かれていない部分に
お前のバグがあるんだよ。
具体的に言うと、Unload命令(使用しているなら)の引数はなんだ?
Unloadで書いている、Enabledはどのオブジェクトだ?
生成したオブジェクトを代入した変数はなんだ?
センスねぇなぁ。 Call f.Show(vbModal)
>>668 モーダルになっていない。
Unloadイベントに書いてない。
やり直し。
Nothing入れてもTerminateイベントが間に合わないってやつか。 最近のPCは高速だから再現するかね?
>672 全く関係ない。
>>671 だから相手するなとあれほど・・・(笑)
675 :
デフォルトの名無しさん :2012/07/18(水) 23:16:20.28
>>673 かんけいあるだろ?
Nothing代入しないとてTerminateイベントの発生が遅延されるぜ?
その結果予想される事は?
そんな事も分からんで
噛みついてたのか?www
>>671 あーあ、可哀そうにwwww
腹イテwwww
>>675 Terminateイベントの発生が遅れるだけだろ。
今話しているのはVB6のバグ。
本来起こり得ないメモリリークが発生するかって話。
Nothingを代入しないで、Terminateイベントの発生が
(意図せず)遅れるのはVB6のバグではない。
つまり、お・ま・えのバグだ
678 :
デフォルトの名無しさん :2012/07/18(水) 23:20:15.15
>>668 Nothing代入するなって言われてんのに、なんでこの人代入してるんだ?
バグなんてないとか言う以前に、題意がわかってないんじゃないの?
学校でも勉強できないタイプだろ?
図星か?w
>>645 > もしVBの世界でNothingを代入しないことによりメモリリークが発生したら、
> それはVBのバグって事になるんだが
違う。コード書いた奴のバグ
> 残念ながらVBにもバグは存在しえて、なるべくそれを回避しましょうってのが
> Nothing代入推進派の一番の目的なんだよ
違う。VBバグ回避ためではなく、Nothingを代入するのが正しいコードだから。
Nothingを代入しなくても、変数がスコープから外れれば自動的にNothingが代入されるよ。 メモリリークは、単にプログラマがバグを書いてるだけ。 それをVBのせいにする奴はただのアホ
Nothingを代入しなくても、メモリリークしない正しいコード Dim f As Form1, i As Integer For i = 1 to 1000 Set f = New Form1 f.Show vbModal Next i ※Form1にコードは全くない
意図的にメモリリークするバグを入れてみた。 アンロードされたあとにロードするから当然メモリリークする。 Dim f As Form1, i As Integer For i = 1 to 1000 Set f = New Form1 f.Show vbModal Load f Next i
メモリ「リーク」の話だよな? アホなコードがメモリを使いきる話じゃないよな?
>>683 君がメモリーリークの意味を分かってないだけだって。
>>682 は正真正銘のメモリーリークのサンプルになってるよ。
アホって誰のことだよ。
こういう人がいるからVBerって馬鹿にされる。
アホが開放した気になって開放してないオブジェクトがメモリに居座ってる状態は、メモリリークと呼べるのかね
>>682 の後に続けてみ
Dim fx As Form
For Each fx In Forms
MsgBox f.Name
Next
あ、ごめん f.Nameは fx.Nameの間違い
>>685 重ね重ねお馬鹿だね。
「アホが開放した気になって開放してないオブジェクトがメモリに居座ってる状態」
がリークでなければ何をリークと言うのか言ってみな。
まあ、
>>682 のコードにもミスリードなところはある。
リークしているかどうかは数の問題ではないのだからループは余分。
1つで十分ですよ
開放したオブジェクト(インスタンス)の使用していたメモリが開放されないならメモリリークといえるが 開放もしてないんだから、たんにプログラムでメモリを使ってるだけじゃないか 開放しないでどんどんインスタンス作成すれば、そのうちメモリを使いきるのは当然で、それはリークでもなんでもない
Dim f As Form1, i As Integer For i = 1 to 1000 Set f = New Form1 f.Show vbModal Load f Unload f Next i だね
繰り返すがリークするのはプログラマのバグであって VB6のバグじゃないよ。
メモリリークってプログラマのバグで はっせいするものでしょ
なんか俺が寝た後に登場した奴バカばっかりだなw ちょっと引っ張り杉たかwww
>>662 >モーダルフォームをNothingせずにOpen/Close
根本的にやり方がおかしい。
つか、お前何の言語の話してるの?
FormにOpen/Closeとかいうメソッドないんだけど。
それに今問題になってるのは、NewしたオブジェクトをNothingを代入しなかったときに
メモリリークが起きるかどうか。
リークするって奴は、再現可能な最小限のコード示すだけで証明できるのに、なんでやらないの? できないんじゃないの?
あれあれ? Class_Terminateが走っても、メモリリークが起きえるって主張じゃ無かったの? Formなんて関係無いでしょ。 それとも昨日の人は居なくなっちゃったの?
>>675 > Nothing代入しないとてTerminateイベントの発生が遅延されるぜ?
されないよ。
されるというなら、根拠Please。
もっと言うと、遅延されてもどうということない。リークしなけりゃね。
遅延が問題だというなら、GCある言語は使い物にならないということになるね。
何のためにFormをNewしてるんだろう? 俺今まで一回もNewしたことないよ。
>>693 >FormにOpen/Closeとかいうメソッドないんだけど。
幼稚園児まで来たようだなwww
マジで意味わからないならかなりの知能障害だろ?www
こえーーーっ!!!
699 :
デフォルトの名無しさん :2012/07/19(木) 12:49:34.92
>>697 そんなことで絶望すんな。
VB6プログラマの中には標準コントロールをNEWできないと思ってる奴が
半数以上だからな。
お前はまだForm限定だから救いようがある。ガンガレ!!!
駄目だコイツ
>>699 は?FormにClass_Terminateなんかないけど?
>>698 なにファビョってんのか知らないけど、俺用語使うと信用されないぞ
Formの場合はFormsコレクションに格納されてることも 忘れないであげてください。 NewとNothingを繰り返して、どんどん消費増えてくのなんて ヒープの断片化だろう・・・ どんな言語でも環境でも起こる。
VB6でFormをNewしまくるコード書く奴とは仕事したくないね
VB6以降の知識とごっちゃになってんじゃないの?
メモリリークといえば IE webbrowser
>>705 まあ、VB6は絶対メモリーリークが無い
あるとすれば書いた奴のバグだ
こう言い切る奴とだけは
仕事したくないね
709 :
デフォルトの名無しさん :2012/07/19(木) 14:44:45.23
VB6は高速化のために意図してメモリハンドルを即時解放しないんじゃなかったっけ?
オブジェクト指向言語でメモリーリークがあったら、それはフレームワークの責任。 プログラマはメモリ管理の呪縛から解かれるのが.netの売りじゃなかった? だったらVB6やめて新しい方に進めばいい。
>>709 だから、即時解放しようが少々遅延しようがいいのよ。リークしなけりゃ。
Class_Terminateの実行が遅延するとかいってる奴いるけど、そんなの嘘。
そこでリソースの解放すりゃいいのよ。
だんだん話をずらして逃げに入ってきたな。 早くClass_Terminateが走っても、メモリリークが起きえるってこと証明してよ。
そもそも言いだしっぺの奴はまだいるのか?
714 :
デフォルトの名無しさん :2012/07/19(木) 15:43:00.89
踊らされてるのだとしたら悔しい。
真昼間からまぁスレがよく伸びること
ageてる奴がいるからでは?
正確な用語の定義がないから、議論が成り立たないんだよ とりあえず、メモリリークの定義から始めてくれないか 本来のメモリリークは、プログラムを終了させてもOSからメモリが開放されていない状態だと思うんだが 単にプログラムがメモリを使ってるだけでメモリリークだって言うやつまでいてるぞ
>>717 > 正確な用語の定義がないから、議論が成り立たないんだよ
何いってんの?
> 本来のメモリリークは、プログラムを終了させてもOSからメモリが開放されていない状態だと思うんだが
お前の認識なんか興味ないんだよ
ggrks
>>717 > 正確な用語の定義がないから、議論が成り立たないんだよ
成り立ってないことにしたいの?
>>601 明示的にNothingを入れたとしても
解放されるとは限らない。
他から参照されてるかもしれないから。
VB6のガベコレは参照カウント方式で、
参照が無くなれば解放される。
メモリの再配置は行わないので、サクサクとは動作するものの
参照カウント方式なので、循環参照を作っちゃうとソフトが落ちるよ。
>>718 あなたの認識を教えてください
>>719 ここ最近堂々巡りしてるように思えますが
議論はIDが出るところのほうがいいな。
>>719 使用中のメモリが開放されないのをメモリリークだと言われたら
そら議論も成り立たんわ
'Sub Main Dim c As Class1 Set c = New Class1 Set c.c = c Set c = Nothing 'Class1 Public c As Class1 でけた
今、VB6がアツい!
>>723 循環参照はプログラム終わるまで開放されない仕様だったはず
プログラム終わっても開放されないなら、リークするVBのバグ
そうでないなら単にプログラマのミス
これは? 'Class1 Dim c As Class1 Private Sub Class_Initialize() Set c = New Class1 End Sub
走らせるの怖くてできない
このClass1のインスタンス生成するコードを書き込んでデバッグ実行せずexe生成して配布。
普通にコンパイルエラー出るだろ
>>722 昨日から頭悪いなおたく。
どのメモリーもCPUやOSから見たら使用中に決まってる。
もしそれをどんな場合でも機械的に判断可能であるならリークなんて問題は発生しない。
つまり、リークしているかどうかは、言ってみればそこにプログラマの意図があるかないかの違いに過ぎない。
同じように確保されたメモリーがあっても、プログラマが開放を忘れていればリークであり、
そうでなければリークでない。
それが開放可能な状態であるかどうかは必ずしも関係ないの。
>>730 元オウムの上祐よろしく論点をずらすのがお得意のご様子。辛いなら早く謝っちゃいなよ。
732 :
デフォルトの名無しさん :2012/07/19(木) 21:03:13.39
「リーク」という言葉のお遊びに発展でつか? VB6ユーザーのレベッルっていったい・・・。 プププッ!!
そんなくだらない議論よりもアクティブ状態のVB6のフォームが最前面から画面の後ろに回ってしまう原因は何なの? 分かった事はフォームのあるプロシージャ―でコントロールへのVisible = False → True をコメントアウトしたらでなくなった。 処理中にコントロールを操作禁止にするためにVisible = False、そして禁止期間終了後にVisible = Trueってよくやるよね? こんなことが原因でフォームが後ろに回り込む理由がわからんわ。
質問内容というより質問の仕方がVBerらしいねw それで他人様に内容が伝わるとでも思ってるんだろうか
Javaとか.NETなら、 親オブジェクトに子オブジェクトを、 子オブジェクトに親オブジェクトを 持たせたりするけど、 VB6じゃそれをやらない。
>>733 そのVisible = False → Trueの瞬間に、君が予期せぬ悪魔が動き出してるのさ。
悪魔が来たりて画面を裏に回す。VB6では日常茶飯事。
だから熟練VB6プログラマは安易にVisibleを変更しない。
コントロールのイベント内でフラグを見て抜けるように作る。
これは予期せぬ再入の防止にもなるから効果的だよ。
737 :
デフォルトの名無しさん :2012/07/19(木) 21:37:33.93
おれはすべてのプロシージャで Static is_ent As Boolean If is_ent Then Exit Sub is_ent = True 処理 is_ent = False Exit Sub これを必ず書いている玄人志向。
HogeClassがあるとして、 (HogeClassは外部に何も関係しない) Private Sub Form_Load() Dim c As HogeClass Set c = new HogeClass End Sub これ、Form_Loadを抜けて解放されない? いちおう、Class_Terminate()は呼び出されるけど。 もし、この c インスタンスから標準モジュールの setCメソッドを呼び出して Call MainModule.setC(Me) なんてやった日にゃ、解放されるわけもないけど、 そういうのは無しとして、スコープ抜けたら Set c = Nothing しなくても、解放されると考えていいかな? ~~~~~~~~~~~ '標準モジュールMainModule.bas--------------------------------- Private c As HogeClass Public Sub setC(c_ As HogeClass) Set c = c_ End Sub
>>738 ケースバイケースでしょう。
単純に今提示されている条件だけなら
開放されるはず。
>>737 それ、どういう効果あるのかな…
マルチスレッドで、JavaでいうSyncronized的なもの?
s_ent = Trueを実行する前にプロシージャ呼ばれたらお終いだな
>>730 お前のリークの定義は解った
とりあえずお前はNothing代入議論には参加するな
743 :
デフォルトの名無しさん :2012/07/19(木) 21:44:03.53
>>737 Option Explicitのように、本来全てのプロシージャ―、クラスで再入禁止をデフォにするオプションがあるべきだよ。
Option Unreantrance のような。再入が必要な時だけ明示的に解除してやればいい。
再帰処理なんてそう多く使わないのだから。
>>738 だから、個別のケースごとに場当たり的に覚えるんじゃなくれ理屈を理解しようよ。
理屈は既にいろんな人が書いてるじゃん。
VBではどこからも参照されなくなったオブジェクトは破棄される。
プロシージャレベルの変数は制御がそのプロシージャから抜けたらどうなるんですか?
>>743 そんなトンデモな主張をするのはVBer以外にいないと思う。
>>737 再突入するかどうかも考えずに全ての処理に書いてるのであればとても素人くさい
>>740 シングルスレッドでも、下手にDoEventsとか使うと再突入する可能性がある
その場合に処理したくないなら有用なコードではある
>>744 この738の例が全てだと俺は思ってるが…
お前の言う
>どこからも参照されなくなったオブジェクトは破棄される
これな。
それにしても、こんなにVB6スレが賑やかになるなんて
捨てたもんじゃないな。
>>746 あ、DoEventsか。
めったに使わないから頭から抜け落ちてた。
732とか734みたいな煽るだけの書き込みも邪魔だから参加してほしくないな
750 :
デフォルトの名無しさん :2012/07/19(木) 21:53:18.23
>>741 するどいね。その通り。気休めでも効果はかなりあったので良しとしてる。
実際には再入をログして統計で見てたりするんだけど
驚くことに意図していない再入があまりにも多く発生している事に気づくよ。
たとえばプロシージャ―を半分まで処理中にそのプロシージャ―が呼ばれる。
そんなことを想定してクリティカルセクションばりのコーディングしてる
VB6プログラマなんて皆無だと思うんだけど。
これがVB6プログラムの品質が劣化視される理由の重要要因だとおれは思ってる。
ここってこんな活気あるスレだったっけ?と
>>750 勘違い甚だしいな。
そもそも意図しない再入が起こるようなコードの書き方に問題があるとは思いませんか?
753 :
デフォルトの名無しさん :2012/07/19(木) 21:58:30.71
>>746 問題はDoEvent以外にも再突入する機会があるって事。
調べたけどネットには情報が無かった。でも俺は2点知ってる。
これが今話題になってるメモリーリークとつながる可能性もあると思ってる。
VB6は君らが思っているほど初心者向け言語ではないぞ。
一旦闇に踏み込むと抜けられない低品質プログラムが出来上がる。
>>750 俺もよくわからない問題が生じた時に再入をログしたり
して調べた事は何度もあるんだが、再入が発生している
事は無かった(もちろん意図的な再入はある)。
お前さんとことソフトの設計自体が違うのかなあ。
755 :
デフォルトの名無しさん :2012/07/19(木) 22:00:13.68
>>752 なら聞くがあなたが把握しているVB6における再突入の可能性を列挙してごらん。
たぶんDoEventsくらいしか思いつかないのだろうし。
DoEventsを多用して Timerコントロールなどのイベントが発生とか? APIでコールバック関数使ってるとかかか?
757 :
デフォルトの名無しさん :2012/07/19(木) 22:01:00.81
>>754 急に再入をログしたことがありますとか言われても、にわかに信じがたいよ。
無理。
>>754 よくわからない問題が生じるなんて事自体がビギナー臭い。クンクンw
>>753 もちろん(アホな)プログラマが意図しない再入を起こす原因はDoEventsだけではないけど、
重要なことは、少なくとも(アホでない)プログラマは意図しない再入が起こらない
コードを書けるということ。
>>756 >APIでコールバック関数使ってるとかかか?
それって逆に考えづらいのでは?
761 :
デフォルトの名無しさん :2012/07/19(木) 22:04:23.13
>>759 キミがその(アホでない)プログラマーでるようにはとても見えないんだけどまあいい。
今日はもう帰ってもいいよ。
>>755 アホプログラマにありがちなシナリオは、
(1) タイマーのイベントハンドラの中からモーダルなウィンドウを表示してる
(2) コントロールのプロパティーの変化時に呼ばれるイベントハンドラの中から
その同じコントロールの対象のプロパティーの値を変えている。
もう10年以上VB6使ってないからぱっと思いつくのはこのぐらい。
>>750 ,754
俺も「意図しない」再入でバグった事はある
が、調査して再入の原因が解らなかった事はない
原因も解らずわけのわからん動作するほど不安定な開発ツールではないぞ
再突入してExit Subで切り抜けるというのも 何か問題が生じそうに思うのだが
DoEventsを使用した時点で再入の可能性は発生するだろうに。 DiEventsを使う前提で「意図しない再入」とか言ってる時点で終わってないかい? もしかして、今お騒がせのメモリーリーク君かな?www
766 :
デフォルトの名無しさん :2012/07/19(木) 22:08:39.40
>>764 発生しないだろ?発生すると思うなら具体例を挙げろよ。Exit Subの前には変数定義しかないという前提でだぞ!
>>766 >is_ent = True
>
>処理
>
>is_ent = False
この「処理」をお願いしてるのに、せずに終わっちゃうわけでそ。
期待した処理が行われないのは問題が生じないか?
>>737 の方法は完璧ではないが、実践的な視点でのトレードオフとしては優れた対策だと思いますが。
リエントラントでないルーティンに発生する再入のかなりのケースで有効な防御となり得る気がしますけれど。
769 :
デフォルトの名無しさん :2012/07/19(木) 22:19:01.92
>>767 お前馬鹿じゃない?リエントラントなプロシージャ―にそれを書くはずないだろ?
VB6プログラマには常識の枠ってのが無いの?怖い連中だねw
>>769 737 名前:デフォルトの名無しさん[] 投稿日:2012/07/19(木) 21:37:33.93
おれはすべてのプロシージャで
>>769 >>737 は「おれはすべてのプロシージャで」と言っている。
「すべて」と言っている以上、突っ込まれても仕方なかろう。
彼には例外処理の記述が必要だった訳さ。
VB6はTry Catch も使えん化石言語だから
それを言うのも酷かな?w
ねえ、この流れはどうやったら終わりになるの これこそ再入繰り返してる気がするんだけど 煽ってるだけのやつはビシッと意見を出せよ 他人へのレスだけじゃなくてさ
頑張ってみたけど エラーでなかった Sub hoge(n As Integer) Static f As Integer If f > 0 Then Exit Sub f = f + 1 Debug.Print n If f > 1 Then Debug.Print "Error "; f Dim i As Long, d As Double d = 1 For i = 0 To 100000 d = d + 1#: d = d / 2#: d = d * 2#: d = d - 1# DoEvents Next i f = f - 1 End Sub Private Sub Command1_Click() Call hoge(3) End Sub Private Sub Form_Load() Timer1.Interval = 1 Timer2.Interval = 1 End Sub Private Sub Timer1_Timer() Call hoge(1) End Sub
1.投げられてきた大量のデータをファイルに保存 2.大量だから処理のループ中にDoEvents 3.処理が終わる前に次のデータが来た 4.is_ent = Trueなので、次のデータを無視してExit Sub Javaだとメソッドをsyncronizedにしてtry catchでwait→再試行ってとこか? 再試行回数上限に達したらエラーログに残す
>>774 >4.is_ent = Trueなので、次のデータを無視してExit Sub
「次のデータ」は全く記録されずに終わるのか。
>>774 これはリエントラントであるはずないが
処理上問題が生じてるという例か?
これはソフトが落ちるという事はないけど、 処理的には問題があるね。
じゃあこうか?? Static is_ent As Boolean Do While is_ent DoEvents Loop is_ent = True 処理 is_ent = False Exit Sub
>>774 投げられてきた大量のデータはファイルに保存される直前にどういう状態にあるの?
メモリーの中に存在するの?それともファイルの中?
処理が無視されても元データは存在するのだから、保留にして次のエントリーで処理すればいいじゃん?
なんか意図的に問題を作ろうとしているような気がしてならないけど?
>>778 処理に3秒かかるとして、処理要求が1msごとに発生したら面白い事になりそうなコードですねw
>>779 引数で配列として持ってきたらアウトだな
1回目配列数10000、2回目配列数1
再入でExit Subしたはいいものの
配列の数が変わっちゃってるので
「インデックスが有効範囲にありません」。
引数で配列というのはダメだな。
>>737 を
Exit SubじゃなくてExit Fuctionにして返り値として成功か失敗かを返せばいいじゃん
783 :
デフォルトの名無しさん :2012/07/19(木) 23:42:11.61
>>781 再入不可のプロシージャで引数に配列使っちゃいけないって言われたようでショック。
コレクションでもインデックスやイテレータでアクセスするのも問題有りだよな。
DoEventsを使わないっていうのを徹底するとして
他に再入可能性のあるコードになりそうなのを教えて欲しい。
>>778 それは「処理」の部分で、そのルーティンを再度呼び出すってことか?
普通にループする気がするんだが
VBはシングルスレッド動作だぞ
Whileループ中にDoEventsしても、is_entが変更されることはないだろ
>>782 ByRefの引数を戻り値の代わりに使うという手もあるぞ。
ただし
>>781 のような問題は残る。
>>783 再入不可なのに、呼び出すのが間違ってるだろ
呼び出す前に呼び出して良いかどうか判断できるようにコーディングするべき
DoEvents以外で思いつくのはタイマー系とAPIでコールバック系ぐらいしか思いつかん
APIでスレッド関係いじるのは論外として、それ以外であるか?
>>786 タイマー系で再入ある?
2年ぐらい前の案件で、RS232C通信使った糞重たいソフトを触ったが
普通に処理を待たされていた(から糞重たかった)。
DoEventsは1箇所も無かったな。
788 :
787 :2012/07/19(木) 23:54:48.25
>>786 それと
>再入不可なのに、呼び出すのが間違ってるだろ
>>781 の例見てたら、再入不可のプロシージャ全て引数に
配列使っちゃいけないっていう印象受けたんだけど。
俺の結論として
・再入不可のプロシージャにDoEventsとAPIコールバック系と配列の引数は使うな
という事になった。
配列だけダメってのが理解できんが そもそも、再入不可だっていってるのに、再入してからそのルーティンで 判断してどうこうっておかしいだろ
まあ、ダメな人は肝心なことが分かってないね。 だから最初から意図しない再入が起こることそのものが問題なんじゃありませんかと言ってるんだが、 話が通じてない。 それも死亡宣告されてから10年経過してる言語でってどういうことだよ。 少なく見積もって10年は触っててこの体たらくなの?
Private col As Collection
'hogehogeを呼び出す前に、colにaddしておく
Private Sub hogehoge()
Static is_ent As Boolean
If is_ent Then Exit Sub
Do While True
If col.Count <= 0 Then
Exit Do
Else
Dim hoge As String
hoge = col.Item(1)
Call col.Remove(1)
'処理---------------------
DoEvents
End If
Loop
is_ent = False
End Sub
これで再入を無視しても大丈夫!
それにしてもDoEvents使っても再入して欲しくないものをis_entで処理って
面倒だね。実質、配列やコレクションの引数が使えない。
>>789 そもそも再入不可プロシージャで Static is_ent で逃げるのは間違いだと?
こうやって外に持たせれば Private isHogeEnt As Boolean 'hogeを呼び出す前にisHogeEntを確認する----------- Private Sub hoge(foo() As String) isHogeEnt = True '処理 isHogeEnt = False End Sub is_ent に比べて、スコープ広いってのが嫌だけど。
>>791 再入可能で、再入しても無視しますよ、ってんならともかく
そのルーティンのローカル変数は、そのルーティンに入らないと使えないんだぞ
つまり再入してみるまで再入かどうか解らないんだぞ
それでどうやって再入不可を判断できるってんだ?
配列やコレクションの引数が使えないってものイマイチ良くわからんが
引数が変更される事を考えれば、参照渡しやオブジェクは全部まずいだろ
まあそもそもその引数は誰がどうやってセットしたのって話だが
あとあれだ。DoEvents使ったからって、マルチスレッドで非同期で動くような事にはならないから
なんでもかんでも再入するわけじゃないぞ
スレ速やヴぇえええ!本当にVB6かよ!
795 :
デフォルトの名無しさん :2012/07/20(金) 11:33:13.91
>>794 どの言語でも非常に重要なミッションクリティカルな問題を
なんとVB6プログラマが解決しようって試みてるんだから滑稽だけど
さすが老害熟練プログラマだけあってすごい枯れたパワーを感じる。
20代の人間力に欠ける若手プログラマにはこれができない。
つまり、マルチスレッドに対応してない言語なのにマルチスレッドを前提としたコーディングを 言語システムのサポートなしにやろうって事でFA?
>>720 > 明示的にNothingを入れたとしても
> 解放されるとは限らない。
> 他から参照されてるかもしれないから。
もう、主張した本人はやめたがってるのかもしれないけど、今問題になってるのは、
参照カウントがゼロになってClass_Terminateが動作してもメモリリークする場合が
あるのかどうかということ。
> VB6のガベコレは参照カウント方式で、
> 参照が無くなれば解放される。
それ、ガベコレって言うのか?
> メモリの再配置は行わないので、サクサクとは動作するものの
> 参照カウント方式なので、循環参照を作っちゃうとソフトが落ちるよ。
落ちるかアホ。
アルゴリズムとデータ構造勉強し直せ。
>>750 >>754 >>756 関数に入ってis_ent = Trueまでの間に
同じスレッド内で別の関数に制御を移す方法を
まさに探してるので、教えてほしい。
タイマーコントロールもSetTimerもSetWaitableTimerも
DoEventsやSleepExなしでは割り込めてない。
VB6プログラマに、リエントラントの正しい実装法を知らない奴が多いということだけはわかった
>>798 RiseEventの隠し機能を使って指定プロシージャーへダイレクトリンクではダメなの?
そもそも、再入する可能性がある関数で、データをファイルに保存とかしちゃ駄目でしょ
804 :
デフォルトの名無しさん :2012/07/20(金) 13:03:24.00
>>803 まったく話に乗れてない人が参入。また荒れそうな予感。
乗れてないということにしないと都合悪いのか
808 :
デフォルトの名無しさん :2012/07/20(金) 14:46:33.75
VB6はシングルスレッド前提と言うのが初心者でもとっつきやすい特長のひとつだったのに ちょっと踏み込むとこんな問題に悩まされるのか?たまんないね。 複雑な部分を隠しているがゆえに隠し切れない問題が露呈するとプログラマはパニックになる。 0を代入したはずの変数が、デバッガで1行進ませてその変数をウォッチすると7が入ってる! なんでだ!絶対にあり得ん!糞言語ジャン!って事になる。否定はしないがなwwww
>>808 再入した方のプロジージャー(つまり変数に7を設定した方)はブレークポイントで止まるのかな?wwww
止まるよ
>>801 >RaiseEventの隠し機能
kwsk
VB6プログラマは何故そんなに暇なのか
>>812 隠しでもなんでもなくて、RaiseEventしたらListener全員のハンドラが実行されるって事では?
815 :
デフォルトの名無しさん :2012/07/20(金) 17:23:18.92
>>813 DICOMサーバーで大当たりして一儲けしたから稼がなくてもいいんだろうよ。
こっちは例の日IBMとスルガの煽りを受けて倒産寸前だっつーのによ。
>>808 初心者がVB6ばっかやってると全然成長しない件について
初心者が趣味グラマで作りたい物がVB6で十分足りるのなら無問題
だから、10年も前に死亡宣告されてる言語で初心者も糞もあるか。
自分が便利に使いたくてツールアプリをときどきは作ってたけど 10年たった今でも初心者レベルのことしか出来ないから俺は初心者でいいよ
VB6の利点があるとすれば… VB6で作った標準モジュール、クラスモジュールを ExcelVBAに取り込める点にあるか。
随分苦しい擁護だな
VB.NETの配列宣言の添字はC#とかと同じになるはずだったのに 開発者の反対でVBと同じになったんだよな VBS/WSH/WMIも結構使ってるとこあるよねー
C#って中間言語を使用しないネイティブコンパイラが存在するのか?
何が「するのか?」だ。 .NETが普及してから何年経ってるんだ。
>>826 いや、CLIなしに直接アセンブラを吐けるC#があるのかと思っただけ。
なぜそれを.NETですらないVBのスレで聞くのか
そこにスレが有るからさ
830 :
デフォルトの名無しさん :2012/07/24(火) 23:28:51.83
VB6でボタンの背景を任意の開始色~終了色でグラデュエーションをかけて表示したいのですが どうすれば可能でしょうか?Pictureやフォームではできるのですが。
VB6からの卒業
>>830 Form1にCommandBox PictureBox Timerを1つずつ貼り付ける
デザイン時に
Command1 (CommandButton)
Style = 1 (グラフィックス)
Picture1 (PictureBox)
ScaleMode = 3 (グラフィックス)
Width と HeightをCommand1と同じに
Timer1 (Timer)
Interval = 100
コードを
Private Sub Timer1_Timer()
Dim x1!, y1!, x2!, y2!
With Picture1
x1 = Rnd() * .ScaleWidth
x2 = Rnd() * .ScaleWidth
y1 = Rnd() * .ScaleHeight
y2 = Rnd() * .ScaleHeight
Call .Line(2, x1, y1, x2, y2, CLng(Rnd() * vbWhite))
End With
Set Command1.Picture = Picture1.Image
Command1.Refresh
End Sub
グラデーションじゃねええええええええええええええええ
>>834 フォームにCommandButtonを1つ、PictureBoxを3つ貼り付ける
デザイン時プロパティの設定
Command1
Style = 1 (グラフィックス
Picture1,Picture2,Picture3共通
ScaleMode = 3 (ピクセル)
AutoRedraw = True
Visible = False
Width,HeightをCommand1と同じサイズに
コード
Private Sub Form_Click()
Command1.Enabled = Not Command1.Enabled
End Sub
Private Sub Form_Load()
Dim i&, c
With Picture1
For i = 0 To CLng(.ScaleHeight)
Picture1.Line (0, i)-(.ScaleWidth, i), RGB(CInt(255 * i / .ScaleHeight), 0, 0)
Picture2.Line (0, i)-(.ScaleWidth, i), RGB(0, CInt(255 * i / .ScaleHeight), 0)
Picture3.Line (0, i)-(.ScaleWidth, i), RGB(0, 0, CInt(255 * i / .ScaleHeight))
Next i
End With
Set Command1.DisabledPicture = Picture1.Image
Set Command1.Picture = Picture2.Image
Set Command1.DownPicture = Picture3.Image
End Sub
>>834 フォームにCommandButtonを1つ、PictureBoxを3つ貼り付ける
デザイン時プロパティの設定
Command1
Style = 1 (グラフィックス
Picture1,Picture2,Picture3共通
ScaleMode = 3 (ピクセル)
AutoRedraw = True
Visible = False
BorderStyle = 0 (なし)
Width,HeightをCommand1と同じサイズに
コード
Private Sub Form_Click()
Command1.Enabled = Not Command1.Enabled
End Sub
Private Sub Form_Load()
Dim i&, c
With Picture1
For i = 0 To CLng(.ScaleHeight)
Picture1.Line (0, i)-(.ScaleWidth, i), RGB(CInt(255 * i / .ScaleHeight), 0, 0)
Picture2.Line (0, i)-(.ScaleWidth, i), RGB(0, CInt(255 * i / .ScaleHeight), 0)
Picture3.Line (0, i)-(.ScaleWidth, i), RGB(0, 0, CInt(255 * i / .ScaleHeight))
Next i
End With
Set Command1.DisabledPicture = Picture1.Image
Set Command1.Picture = Picture2.Image
Set Command1.DownPicture = Picture3.Image
End Sub
??? こいつは何がしたいん?
夏だからな
839 :
デフォルトの名無しさん :2012/07/26(木) 09:34:16.33
VB6でライセンスサーバーを作ろうと思ってる 本格的なものでなく、ハッカーにかかったら丸見えレベルの物で問題ないんだが やはりWinSockを使ってライセンス情報を授受するとかがスマートな実装なのかな? 何か良い実装例があるといいのだけれど。
>>839 NetHASPとかじゃダメなの?高いけど商用なら可能じゃない?
HASP SRMとか鯖使ってアクチできるセキュリティソフトも販売してるみたいだけど。
841 :
デフォルトの名無しさん :2012/07/26(木) 10:10:41.70
>>840 そんな本格的なのじゃなくていいんです。
目的はクライアントPC側でドングルを使ったプロテクトをかけずに
サーバー側で起動しているライセンスサーバーを見て起動を継続するようにしたいと思っています。
ライセンスマネージャーには何らかのプロテクトをかける必要はありますがシルアルナンバーとかで十分なレベルです。
サーバーはWebサーバーでいいんじゃないの? わざわざサーバーを自作しなくても
VB6だけにWebサーバーとかだとSOAPとか余計に複雑になるんじゃねーの? .netならWEBサービスとか作るの簡単だけどな。
そういえば、はるか昔にVisual InterDev とかいう開発環境があったなwww 確かVisualStudio 6.0にも入ってたはずだがwww
ASPならVBScriptだし、クライアントからならWinInet使えば HTTP簡単に使えるし。
846 :
デフォルトの名無しさん :2012/07/26(木) 10:53:07.63
わざわざWEBサーバー立ち上げるならメールスロットでも使った方が簡単だし実用的だろ? ASPにVBScriptでできなくないだろうが複雑すぐる。
メールスロットを使うくらいならソケット通信でいい気が刷る
Winsockよりメールスロットの方が簡単だろ? まあWindows限定ではあるが。
850 :
デフォルトの名無しさん :2012/07/26(木) 11:37:21.68
みなさん、ありがとうございますm(_ _)m 今のところ メイルスロット > WINSOCK >> HTTP(ASP VBScript)+WinInet という感じでしょうか。
>>848 受信側の実装はメールスロットの方が楽だよ。
え、Winsock超簡単じゃん。 コントロール貼り付けて10行くらいコード追加すれば、非同期通信できるもののできあがり。
だよね。標準的技術だし。そっちのほうがいいよね。
10行じゃ無理だろ。特に受信側。 メールスロットなら10行で余裕だけどな。
855 :
デフォルトの名無しさん :2012/07/26(木) 16:15:06.71
WinsockでUDPだと同期処理が不可能に近い。まあ力技で無理やりやれば別だが。 メールスロットはメッセージが来るまで待機状態に出来るから広範囲なインプリメントが可能。 だてに非標準じゃないって事だ罠w
Winsockで受信データ待機中にポーリング監視しなくて済む方法があれば・・・?
857 :
デフォルトの名無しさん :2012/07/26(木) 16:29:30.82
>>854 受信側とか頭悪い言葉使うなよ。
サーバ側の通信部分は、これだけでいい。
ブラウザで
http://localhost:12345ってやれば 、HTTPヘッダをdebug.printする。
3分で書けるじゃん。
Private Sub Form_Load()
Winsock1.LocalPort = 12345
Winsock1.Listen
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Winsock1.Close
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim buf As String
Winsock1.GetData buf
Debug.Print buf
End Sub
Winsock簡単すぎwww メールスロットのコード頼む
やはりWebサーバーだろう 暗号化したくなったらSSLもあるし。
>>858 おいおい、いつからWinsock1なんてコントロールがVB6の標準に御仲間入りしたんだよ?www
>>861 お前、何エディション使って仕事してんだよwww
ラーニングエディッションだとWinSockコントロールが使えない
メールスロット推しの奴って、ひょっとしてWinsockコントロールの存在を知らなかったのか?www
ラーニングエディションを前提として回答すべきとかファビョるなよ
これは恥ずかしい
結局質問者は自分が考えてた方法が最適だったな
まぁ質問者がラーニングエディション使ってる可能性もあるがな
その場合質問者はWinsockAPIを使う気だったてことなのか?
俺は生Winsock APIで書かれた、全て同期通信の数万行レベルのVB6の通信プロジェクトを引き継いだことがある プロトコルの変更とか電文の追加とか地獄だったね
その程度で地獄とは青いな
真の地獄とは何百万行を指す
やったことないけど、DCOMとかどうだろう なんでいまさらVB6でそんなものを作りたいのか
>>873 DCOMってRPCの一種だよな?DICOMと混同しそうで紛らわしい名前付けんなよ。
876 :
デフォルトの名無しさん :2012/07/26(木) 21:32:47.36
>>870 Winsockで同期通信とかどうやったらできるのかねぇ?
>>876 ブロッキングソケット使うだけでしょ
メッセージループを止めちゃうのであまりお勧めしないけど
そもそも同期・非同期ってどの層で見てそう言ってるのか
アプリケーション層?
>>876 Winsockで非同期ソケットを使わない。
>>878 Winsockで非同期ソケットを使う。
>>881 VB6とかけ離れてしまったな。下手なアドバイスの典型だわ。
商用OCXにいいのがあるだろ?
受信するとイベントが派生する優れものが。Poewr TCPとか言ったっけ?
>>882 > 商用OCXにいいのがあるだろ?
> 受信するとイベントが派生する優れものが。Poewr TCPとか言ったっけ?
何いってんの?標準のWinsockコントロール使ったことないのがバレバレだわ
お前メールスロットがどうこう言ってた奴だろ
さっさとコードさらしてここから去れ
>>883 メールスロット?何のこっちゃい?アホ?
別に標準コントロールで不足する機能を商用OCXでサポートして何か変なの?
標準のWinsockコントロールを使う美徳とかあんのか?
へぼプログラマーのひとりごとかね?
きんもーっ★
885 :
デフォルトの名無しさん :2012/07/27(金) 12:09:36.95
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Winsock1.Close Winsock1.Accept requestID End Sub 接続要求の処理でクローズしていいの?
Winsock コントロールは Load、Unload を繰り返すとシステム リソース不足やメモリ不足状態に陥ることがある。 趣味の世界ではいいが、プロが使ってはダメだよ。
>>885 接続が終了したのだからCloseしてもいいんだよ。
でも、実際にはポート番号は解放されずに使用中になってることがあり
再接続時にエラーとなることがある。不安定極まりない。
VB6暦10年なのに、LOADステートメントでコントロール配列を作れるなんて今初めて知ったwww
890 :
デフォルトの名無しさん :2012/07/27(金) 12:42:58.69
>>858 そのコードだと、立て続けに2回起動/終了すると
2回目のWinsock1.LocalPort = 12345でポート使用中でエラーで落ちるね。
さすが三流プログラマだわw
よっぽど悔しかったんだろうか。 もうやめてくれよ。
ソケットの仕組み知らない奴多すぎでワロタ
>>886 FormをNewする厨か?
なんでLoad/Unloadを繰り返す必要があるんだよ?
ふつう、接続要求を受け付ける口と、実際にデータを送受信する口とを分けるんじゃない?
>>891 ごめん、悔しくない。ちょっとからかっただけ。
だって3分で書いただけあって腹イテなソースだったので。
896 :
デフォルトの名無しさん :2012/07/27(金) 13:03:31.41
>なんでLoad/Unloadを繰り返す必要があるんだよ? TCPの場合、接続数分コントロールを用意する必要があるからだろ? たとえば20台のクライアントから同時接続がある場合とか。 経験の浅い奴には推測できないのも無理ないか。 ソケットの仕組み知らない以前の問題だ罠www
>>894 きっと3分じゃ無理だったんだろ?
10分あればまともに使えるコードが書ける奴だと思うよ。
TCP/IPはBSDでCを使って組めと昔から決まってる VBなんて話にならないしそもそもWindowsなんて論外
VB6のソケットコントロールで複数接続のサーバーを 作ろうと思ったことなかった。 おまいらなんでもVB6でやろうとしすぎw
900 :
デフォルトの名無しさん :2012/07/27(金) 13:11:49.66
いや、おまいらはまだVB6の潜在能力のすごさを知らない。 氷山の一角しか知らずして北極全体をを語るな。
901 :
デフォルトの名無しさん :2012/07/27(金) 13:14:22.15
>>896 こんな感じか?
Private SubWinsock1r_ConnectionRequest(Index As Integer, ByVal requestID As Long)
i = i + 1
Load Winsock1(i)
Winsock1(i).LocalPort = 1234
Winsock1r(i).Accept requestID
End Sub
>>894 1対1通信だから問題ないんだよ。デバッグはローカルでやってるし。
903 :
デフォルトの名無しさん :2012/07/27(金) 14:08:20.59
>>894 コピペとはいえ、58秒かかったw
Private Dim intMax As Long
Private Sub Form_Load()
intMax = 0
Winsock1(0).LocalPort = 12345
Winsock1(0).Listen
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
For i = 0 to Ubound(Winsock1)
Winsock1(i).Close
Next
End Sub
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load Winsock1(intMax)
Winsock1(intMax).LocalPort = 0
Winsock1(intMax).Accept requestID
End If
End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim buf As String
If Index > 0 Then
Winsock1(Index).GetData buf
Debug.Print buf
End If
End Sub
>>901 ド素人が。
LocalPort = 0だアホ。
おっと、
>>903 とかぶってしまった。
メールスロット推しの奴は、早くコード貼れ。
>>905 Winsock1(i).Close のところ、アレで良かったのかな?
>>903 それだとクライアントが切断、再接続の都度Winsockコントロールが1つずつ増えて行くんだよな?
バッファオーバーフローでバックドアが開きそうで怖いわw
uyの気持ちがちょっとわかったわw 誰かがちょっとコード貼ると、鬼の首取ったように批判するのな 駄目と思うなら、お前らが正解のコード貼れや
909 :
デフォルトの名無しさん :2012/07/27(金) 14:42:07.08
>>907 クローズしたコントロールへの接続再割り当てとかまで考えると面倒だから
最初にクライアントの最大数を定義しておいて、その数+1だけWinsockコントロールをロードしておくのが
管理上ではスマートな実装だろうな。
>>908 だいたい精査なんてそんなものだろう?
よくやってるじゃん。チェーン店メニューの商品開発で
「ミソ感が足りない」とか指摘する社長とか。
さらにミソ感だしたら辛過ぎてくえねーだろうが!みたいな。
でもなんかいわないとチェッカーとしての立場がないというか。
MSDNライブラリVS6.0に書いてあるWinsockコントロールの説明を読めばいいんじゃないの? もしくは同ライブラリ内のWinsockAPI関連の記事とか
今時書き物を読んで開発する奴はいねぇーよ。直観でコーディングする時代だからな。 逆に直感で理解できないような開発環境はこれからの時代淘汰されるよ。
>>911 >MSDNライブラリVS6.0に書いてあるWinsockコントロールの説明を読めばいいんじゃないの?
あなたこそ読んでみたのですか?
エラー処理とか接続の管理とかについては一切何も書かれていないけど?
ここにあるサンプルのコーディング程度のことしか書いてありませんよ。
>>912 書き物を書いてるくらいじゃないと淘汰されるんじゃないの?
915 :
デフォルトの名無しさん :2012/07/27(金) 15:52:20.18
>>906 一度接続したらアプリが終了するまで接続状態を維持するのか
一回のデータ授受で接続を閉じてListenにするのかで異なるだろ?
一回の授受で閉じる?なにいってんだ?
917 :
デフォルトの名無しさん :2012/07/27(金) 16:45:08.30
>>916 そういう仕様があってもおかしくないだろ?
Listen
ReceiveData
Close
Listen
ReceiveData
Close
:
:
ブラックボックスなWinsockコントロール使うより WinsockAPIを使って自前実装したほうがいいんじゃないの?
でもAPIでやるならVBじゃなくても・・・ってことになるし
>>917 それはおかしいよ?
ネット関係のプログラム作ったことないの?
922 :
デフォルトの名無しさん :2012/07/27(金) 16:53:25.29
>>921 ソケットをCloseするとListenが解除されると思っているのでは?
924 :
デフォルトの名無しさん :2012/07/27(金) 16:57:10.57
これ以上話すのは無駄だからさ、月曜までソケットプログラムの勉強してきなよ
ん?VB6のWinsockコントロールは一度設定されたListen(接続待ち状態)がCloseで解除されるのか?
927 :
デフォルトの名無しさん :2012/07/27(金) 17:01:19.15
>>927 これ以上話すのは無駄だからさ、月曜までソケットプログラムの勉強してきなよ
なんで土日に勉強せなあかんねんw
接続待ちの状態にしたい時にListenにするだけの話だろ? たとえばクライアントから接続要求が来た時点では 接続を待つ必要が無いのだからCloseしてListenを解除してもかまわない。 サンプルコードではListen用のソケットを個別に設けているのだから サーバー側はアプリが終了するまでCloseする必要性がない。 最大接続数を超過した場合はどうなるか知らんが。
MSDNライブラリVS6.0のWinsockコントロールのAcceptメソッドの説明のページのサンプルコードだとCloseしてるよ
最大数来たらCloseすればいいんだろ
933 :
デフォルトの名無しさん :2012/07/27(金) 17:15:58.14
TCPの仕組みとか Winsockで何がやりたいのかとか そういうとこが明確でないと議論しても無意味な希ガス
VBしかできない奴はほんとつかえねえな
>>931 MSDNライブラリ(Books Online)の「Winsock (Winsock) コントロールの使い方」にある「2 つ以上の接続要求の受け付け」では
Listen側のWinsockコントロールはCloseしてませんよ。
恥ずかしいなぁ。
937 :
デフォルトの名無しさん :2012/07/27(金) 17:26:00.43
>>930 そういえばVB6のWinsockコントロールは最大接続数が設定できないけど
最大接続数はいくつになっているんだろうね?
Winsockで接続時間にタイムアウトとかある? 朝ConnectしてCloseしなければ夜中まで接続を維持する?
ないよ
鵜呑みにするな
943 :
デフォルトの名無しさん :2012/07/27(金) 17:54:26.29
>>938 以前にXPで実験したことがありましたが、気が付くと切断されていたりするので
必要な都度、接続/データ授受/切断 を行った方がいいですよ。
>>942 正式には頒布できないってどういうこと?
REDIST.TXT には
使用範囲を広げた再頒布可能コード:
標準再頒布可能コード:
の両方にあるけど
それステマってやつ?
947 :
デフォルトの名無しさん :2012/07/27(金) 18:34:19.23
サーバーとクライアントって言葉使おうよ
Listen = 鯖 じゃないんだけどね。
952 :
デフォルトの名無しさん :2012/07/27(金) 20:44:53.31
一つのコントロールでListenもConnectもするWinsockコントロールより Dartの商用TCPコントロールの方が構造が分かり安いな。
スレの流れとは関係ないけど、うちの会社の新人研修の話。 とりあえず3ヶ月間研修して現場へ配置するのだけど 最初はまずC言語で研修。 そのうち、memallocとかrealloc関数にからんで、メモリの スタック領域とヒープ領域の話になる。 動的な領域の確保、確保した領域をさらに広げる、フラグメントの生成とか。 これと構造体と関数と、制御文は当然として こういう基本がわかってからJavaとかVBとかに進んでもらう。 ガベコレの方式も本一冊になるぐらいの分量があるけど 調べて理解してもらうにはこのC言語での研修が役に立つという風に 社内での共通認識になっているのだけど、もっと良い方法ある?
>>953 頭でっかちになってる気がする。
詰め込みすぎてない?
当然の部分の話だけで済むような言語からはじめてはどうだろうか
なぜこのスレで訊く
>>953 メモリの動静は使用するOSによっても大きく変わるし
言語だけアカデミックに追及しても今の時代は無意味なんだけどね。
957 :
デフォルトの名無しさん :2012/07/27(金) 21:48:09.40
C言語から始めるくらいならアセンブラから始めた方がイイと思うけどなぁ。 特にARMプロセッサのアセンブラとか、リトルエンディアンとビッグエンディアンの どっちもアリとか末恐ろしい予測型条件分岐とか非常に興味深いよ。
でも使う言語はVB6なんだろwww
一番大切なのは人間教育だと思うけど。 土台のパーソナルが優秀でないとその上に根付く技術も色あせる。 特にコンピュータに携わる人間には変人が多いと言われるのだから 一般の人達とのコミュニケーション能力を育成する場が必要に思う。
↑こんな奴が人間教育とかコミュとか言ってもな。 おまえ失敗作じゃん。
人間性を身につけてしまったら転職してしまう
962 :
デフォルトの名無しさん :2012/07/27(金) 21:54:36.54
ウチの新人、C#が得意ですという触れ込みだったが 実はC#でまったくコード組めない事が判明した。 今までどうやってたのか問い詰めたらVB.netをコンバーターにかけて C#のソースに変換して提出していたらしい。 上司からは一番恥ずかしいのはそれに気づかなかった俺らだと言われた。 最近のC#コンバーターの出来があまりに良すぎて痛い目にあった俺らに 愛の手を・・・。
>>962 確かに自分でC#で書いたコードよりカッコよかったりするよなwwww
964 :
デフォルトの名無しさん :2012/07/27(金) 21:59:15.95
>>960 こんな奴って、どんな奴化も分かりもしないで良く言うわこの脳ナシがよーーーっ★
>>964 お前は960を能ナシと呼べるほど分かってるのか
すげえな
>>962 VB.net使えるならいいんでないの?
今組めなくてもすぐ順応しそうじゃない。
本当に問い詰めるなら、とくにWeb環境だと基盤も触らせないとだめだしな。
やること多すぎて破綻しそうや
>>966 俺もそう思う。
アンマネージドコードでも書かない限り、
C#で出来る事はほぼVB.NETでも出来るし。
.NET黎明期はVB.NETで出来ない事もあったからC#にこだわる意味あったけど、
今なら別にどうだっていいじゃん。最終成果物をC#で提出してくれるなら。
>>954 3ヶ月あれば10人中9人は理解してもらえる。
ガベコレうんぬんについては、その後の自分の勉強でやってもらうんだけど
ヒープから領域確保とか解放とかそういうイメージをもってもらっているのと
持っていないのではその後の学習に差が出る…という社内的な認識の話。
データ構造とかも初歩的な内容だけは研修で。
>>955 実は学生時代にVB6とかVBAでいろいろ作ってましたっていう子がいたんだけど
制御文はそこそこ使えても、データ型わかってなかったり、ましてや
クラスモジュール・標準モジュールの存在もわかってなくて
イベントプロシージャに全部ベタ書きするような子だった。
C言語で研修するうちに基本わかってきたなっていう感じだったけど
この研修なかったらどうなってただろうふと思って。
>>956 なんらかの言語を用いずに、データ構造とかメモリだとかそういう説明だけ
延々としても逆にわかりにくいかと。
今はオブジェクト指向言語隆盛の時代で、オブジェクト指向そのものを
解説した本は、たいていはJavaで説明してあって、Javaを教材に用いる
べきだという意見もあるんだけど、メモリの存在を意識できるかどうかという
点でC言語採用みたい。Cの案件少ないにも関わらず。
>>962 VB.NETでそこそこ組めるようだったら新人として立派じゃないですか。
C#にコンバータで変換というのが笑えるけど。
売り込みに必死だったんですね。
VB.NETいけるんならC#も変わらないですから、すぐに馴染むんじゃないでしょうか。
>>963 Javaのclassファイルを逆コンパイルしてもコードが洗練されている事がありますよ…
.NETやJavaはバイナリといっても 実行時型情報などのために かなり情報を残してるからな。
970 :
デフォルトの名無しさん :2012/07/28(土) 22:16:00.99
ピクチャボックスにグラフを描いて マウスを乗せるとそのピクチャの上の子ピクチャをVisibleにして その位置のグラフのデータを表示するというTooltipTextのようなことをしているのだけど マウスがピクチャに乗ってない時は子ピクチャが邪魔なので消したい タイマーで消すしかない?
javascriptのonmouseoutみたいなイベントがVBにあればよかったのにね
ぶっちゃけタイマ使った方が簡単だ
カーソルが外れてもほんの少しの時間は表示させておきたいのだろうからonmouseoutではダメさな。
そんなにタイマーを毛嫌いしなくていいと思う。 俺はタイマー好きだよ
標準タイマーは500ms以下になると精度がボロボロなのでマルチメディアタイマーを使うのが普通だよな。
>>974 お前の人生のタイマーもTime Out間近だね。チーン!
>>975 どういう意味で精度と言ってるのか知らないが、いかなる意味でもポップアップの
制御ごときに精度なんて必用がない。
979 :
デフォルトの名無しさん :2012/07/29(日) 12:50:34.97
タイマーの設定値はディレイであって周期ではないよ 勿論ここの人は知ってると思うけど
何だよディレイってw 自信がないからほのめかすような言い方しかできないんだろうが 自信がないのなら最初から黙っているべきだ。
ディレイって格ゲーでしか使わないワードだと思ってた
ディレイ遅延?
つまり1秒感覚で設定していても 何か理由でイベント発生が遅れると、その送れた時点から 1秒後にイベントが発生するということか
984 :
デフォルトの名無しさん :2012/07/29(日) 15:39:44.00
だってIntervalってプロパティじゃん どっからディレイって言葉がでてきたのか
>>984 delayじゃ1回きりで終わっちゃいそうな印象を与えるから?
delayという言葉を持ち出したのは、
実際はタイマーイベント処理時間分遅延して行くよって事なんじゃないの?
知らないけど。
あとアニメーション効果をもつコントロールなんかだとdelayプロパティあるね。
ツンdelay
知らないなら黙っててください
988 :
デフォルトの名無しさん :2012/07/29(日) 20:37:53.04
大学一年生のプログラミング初心者です。超初心者です・・・ ubuutuを使用しています。 テキストエディターを使い自分で一からジャンケンプログラムを組んでいます。 が、何度試してもエラーが起きてしまいます。 改善点を教えてくれませんか? #include <stdio.h> #include <stdlib.h> int main() { int n; int player; /**/ int computer; /**/ srand(0); /**/ do { /**/ printf("あなたの手は? (グー:1 チョキ:2 パー:3) > "); scanf("%d", &player); /**/
989 :
デフォルトの名無しさん :2012/07/29(日) 20:38:42.84
続き computer =rand() % 3 + 1; /**/ if(computer == player){ printf("あいこです\n"); } else if(player == 1 && computer == 2){ printf("プレイヤーの勝ちです\n"); } else if(player == 2 && computer == 3){ printf("プレイヤーの勝ちです\n"); } else if(player == 3 && computer == 1){ printf("プレイヤーの勝ちです\n"); } else{ printf("コンピュータの勝ちです\n"); } /**/ printf("このまま続けますか? 続ける場合は9,続けない場合は 0 を入力してください>"); scanf("%d",&n); /**/ }while(n != 0); return 0); }
掲示板の使い方まで初心者ではいろいろ困るよねw
991 :
デフォルトの名無しさん :2012/07/29(日) 20:44:13.86
ネタ投稿か
これはひどい
994 :
デフォルトの名無しさん :2012/07/30(月) 08:47:45.35
>>991 すいません、じゃなく、すみません、だろ?
専門学校で謝り方も習って来い。
すみません。 return (0);
while(0 = 0); return 0); これが今のお前の姿だよ。
さすがVB6ユーザー。こう言いたかったのでは? while(0 == 0); return 0);
999 :
デフォルトの名無しさん :2012/07/30(月) 09:53:16.62
(00) ( 0 )
1000 なら (0=0) ( 0 ) サル
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。