VBプログラマ質問スレ(Ver.6.0 まで) part59
1 :
デフォルトの名無しさん :
2012/08/07(火) 16:51:15.38
以上、テンプレ。
多少、誰か書かないと、スレが落ちるよ
ここって即死ってないの? あるなら即死判定分は伸ばさないと…
スレが進んでる所はおちないけど、書き込みが少ないスレは落ちるんだよな まあ、落ちるって事はいらないって事かもしれないが
前スレのHotだった話題: * 使ったオブジェクトはNothingを代入しないとメモリリークするよ!(ほんとか?) * メールスロット簡単(はよコード書け) * MicrosoftのTCP/IPコンポーネント使えねー(じゃお前は使うな)
TCP/IPコンポーネントじゃなくて、Winsockコントロールか。
11 :
デフォルトの名無しさん :2012/08/10(金) 22:14:21.13
12 :
デフォルトの名無しさん :2012/08/11(土) 00:08:15.55
Win7starterにVB6IDE(LE)をインスコしたんだが コンポーネントにコモンダイアログコントロール(SP6)を追加できないエラーが出る 他にもいくつかエラーが出て追加できない (XPでは問題なく追加できてたのに)
インスコとか書くなよ、バカにしか見えない。
遠回しにバカは書き込むなという意味です
15 :
デフォルトの名無しさん :2012/08/11(土) 11:58:16.08
泣けるぜ…
16 :
デフォルトの名無しさん :2012/08/11(土) 16:33:15.45
コンポーネントの追加とかやめた方がいいよね 色々バグあるし他の環境で使う時に面倒だし ダイアログならAPIで作っておいた方が
そんな事ならいっそVB6つかわなきゃいいのに
18 :
デフォルトの名無しさん :2012/08/11(土) 16:58:35.66
メールスロットはコードは簡単だよね ネットワーク設定さえしておけば あとサービスもいったかな
19 :
デフォルトの名無しさん :2012/08/12(日) 03:07:43.89
有料のFlexGrid使ってるアプリ、どーせいっちゅうんじゃ
20 :
デフォルトの名無しさん :2012/08/12(日) 16:47:58.30
あるリストを表示して、そのリストの中から選んで詳細表示をする といった単純なプログラムです。 ・リストの上にコンボボックスを配置して、複数あるリストのデータ元を選択します ・リストの右に縦スクロールバーを配置して、マウスホイールでリストをスクロールさせます 細かくは、他にも色々とコントロールが乗っていて設定画面やらなんやらありますが 基本は上記の動作をするものです
21 :
デフォルトの名無しさん :2012/08/12(日) 17:31:29.06
>>20 は自己解決しました
問題は、コンボボックスにフォーカスがあたると
コンボボックスがマウスホイールイベントを先に取ってしまい、メッセージフックできない
それを解決するには、コンボボックスが選択され、その処理をした後に
スクロールバーをSetfocusする以外に方法がないかということだったのですが
Private Sub Combo1_Click()
処理
SendKeys "{TAB}"
End Sub
でいけました
22 :
デフォルトの名無しさん :2012/08/14(火) 13:58:26.80
>>13 そもそも、ここはVB6もろくに書けないバカが集うスレだろ。
23 :
デフォルトの名無しさん :2012/08/14(火) 22:12:39.16
質問してみなさい
>>9 ボタンコントロールにグラデュエーションを付けるって話題も入れてあげてよ。
俺が質問して、実際に頂いたコードで書いて納品住んでるんだからさ。
目下の質問 リストコントロールで一行ごとに背景色や文字色を変更する事ってやっぱりできないの?
26 :
デフォルトの名無しさん :2012/08/16(木) 20:14:26.10
>>25 サブクラス化を使えば可能だが、このスレには出来るスキルを持ってる人は来ないと思われ。
>>25 オーナードローでも可能っぽい。でもメッセージフックが必要だし面倒だぞ。
無難なのはListViewとかTreeViewを使う事かな。
28 :
デフォルトの名無しさん :2012/08/16(木) 20:30:08.93
それはどうかな。
まーた何も具体的なソリューションを提供できないクズどもが騒ぎ始めたw
サブクラス化というのはLerningEditionではできなさそうな雰囲気
32 :
デフォルトの名無しさん :2012/08/16(木) 20:52:24.73
メッセージフック期間中にブレークポイントで停止するとVB6特有の楽しい出来事が起こるw
>>32 C:ドライブが消えました。どうしてくれますか?
34 :
デフォルトの名無しさん :2012/08/16(木) 23:23:32.66
特にIDEで実行・デバック中はメッセージフックを使わないようにしないとね
マジでCドライブがふっとぶの?それ怖いんだけど どうやってデバグすんのよ
37 :
デフォルトの名無しさん :2012/08/17(金) 09:32:46.36
>>35 >どうやってデバグすんのよ
命がけでどうぞ
ADOでOracleにアクセスしてるんですが CLOB型のデータの取得が rs.Fields(0).Value で取得できているのですが、これでいいのでしょうか? readとかしないといけなかったような気がするのですが。
>>40 エッチな奴だな。性的カーソルかよ?
静的カーソルなら当然の結果でしょ?
2にしたらReadしないと無理と思われ。
>>41 カーソルが性的だとReadしなくてもいいんですね。
勉強になりました。ありがとう。
43 :
デフォルトの名無しさん :2012/08/18(土) 13:58:33.26
静的過疎る
44 :
デフォルトの名無しさん :2012/08/19(日) 16:15:01.21
何もかも朝鮮人が悪い
45 :
デフォルトの名無しさん :2012/08/20(月) 09:59:31.31
最近は怖くて香港通販も利用できない。 中国から輸入されている食品は一切食べない。 食費が高くつくようになった。
46 :
デフォルトの名無しさん :2012/08/21(火) 05:29:57.41
Private Sub Form_Load() 100 ' 200 GoTo 400 300 Debug.Print "300" 400 Debug.Print "400" End Sub
47 :
デフォルトの名無しさん :2012/08/24(金) 07:57:30.50
ピクチャボックスにAVIファイルを表示させるのにMCIコマンドでやってるのだけど ピクチャボックスの大きさを変えて、表示する映像のザイズを合わせるのは "put ALIAS destination at 0 0 W H" これで縮小はできるのに拡大ができないのは何でだろう
>>47 単純にストレッチすればいいのでは?アスペクト比は無視だが。
49 :
デフォルトの名無しさん :2012/08/24(金) 15:34:19.20
>>48 単純にストレッチの意味がわかりません
オーバレイモードなら拡大・縮小はできるのだけど
ピクチャボックスの位置で再生する場合は拡大ができない・・・
50 :
デフォルトの名無しさん :2012/08/24(金) 15:45:33.39
何故、今時AVIなのかは、今時VB6のスレだからいいとして
過疎ってるみたいだし興味ある人はやってみないかな
flvやmpegやmp4をAVIに変換すればスロー再生・コマ送り・逆再生も自由自在。
おっぱいが揺れてるシーンだけをスローで繰り返し再生もプログラム次第
宣言は
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
使い方は
sndstringに
>>47 のようなコマンドを羅列して
Dim rtnstr As String * 256
rtn& = mciSendString(sndstring, rtnstr, 256, 0)
こんだけ
まずはおっぱいが揺れてるAVIをうpしてからだな
52 :
デフォルトの名無しさん :2012/08/25(土) 08:03:01.67
再生ボタン Private Sub Command1_Click() Dim rtnstr As String * 256 mciSendString "open C:\OPPAI.AVI alias ERO style child parent " + CStr(Picture1.hwnd), rtnstr , 256, 0 End Sub ファイル名が8文字を超える場合は短いファイル名に変換する必要あり 再生した動画に”ERO”という名前を付けて、以後この名前で各種制御をする 停止ボタン Private Sub Command2_Click() Dim rtnstr As String * 256 mciSendString "close ERO" , rtnstr, 256, 0 End Sub
53 :
デフォルトの名無しさん :2012/08/25(土) 08:25:59.21
フォームリサイズ Private Sub Form_Resize() Dim rtnstr As String * 256 Picture1.Width = Me.Width - Picture1.Left -10 Picture1.Height = Me.Height - Picture1.top -30 '↑実際はGetSystemMetricsで枠幅等を取得するけど、取り合えずはこれでいいでしょう mciSendString "put ERO destination at 0 0" + Str(Picture1.Width) + Str(Picture1.Height), rtnstr, 256, 0 End Sub ウィンドウの大きさに合わせてピクチャボックスの大きさが変わり、 そのピクチャボックスの大きさに合わせて映像の大きさが変わるはずなのだけど 元のサイズより小さくはなるけど、大きくならないのは何故か?
54 :
デフォルトの名無しさん :2012/08/25(土) 08:34:23.17
ソースは以上です
Picture1とボタンを二つフォームに貼り付けて
>>50 の宣言文と
>>52 Command1_Click、Command2_Click
>>53 Form_Resize
AVIファイルはC:\WINDOWS\clock.aviとかを使ってください
55 :
デフォルトの名無しさん :2012/08/25(土) 08:46:46.80
>>53 の
Str(Picture1.Width) + Str(Picture1.Height)は単位がピクセルかも
自分のプログラムはスケールモードを全部ピクセルに設定してるので
デフォルトのTwipなら
Str(Picture1.Width \ Screen.TwipsPerPixelX)
+ Str(Picture1.Height \ Screen.TwipsPerPixelY)
>>55 プロジェクトごとZIPで固めてアップローダーに上げた方が回答が早く来るよ
57 :
デフォルトの名無しさん :2012/08/26(日) 18:49:16.45
1回でコピペできるようにまとめました openの後のplayが抜けてたので追加しましたすいません Dim rtnstr As String * 256 Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long Private Sub Command1_Click() mciSendString "open C:\WINDOWS\clock.avi alias TOKEI style child parent " + CStr(Picture1.hwnd), rtnstr, 256, 0 mciSendString "play TOKEI window", rtnstr, 256, 0 End Sub Private Sub Command2_Click() mciSendString "close TOKEI" , rtnstr, 256, 0 End Sub Private Sub Form_Resize() Picture1.Width = Me.Width - Picture1.Left -10*Screen.TwipsPerPixelX Picture1.Height = Me.Height - Picture1.top -30*Screen.TwipsPerPixelY mciSendString "put TOKEI destination at 0 0" + Str(Picture1.Width \ Screen.TwipsPerPixelX) + Str(Picture1.Height \ Screen.TwipsPerPixelY), rtnstr, 256, 0 End Sub
58 :
デフォルトの名無しさん :2012/08/26(日) 21:31:45.97
つべのダウンローダー、このサイトに教えてもらってできますた
今日一日かかった
ttp://par osky.ne
t/wor
dpres
s/?p=993
ふざけてんのか
VB6からgzipファイルってどうやって扱うの?おすすめのライブラリとかある?
ggrks
63 :
デフォルトの名無しさん :2012/08/27(月) 22:53:13.99
>>58 のロジックじゃ既に対応できないつべソースがあるんだね
イタチごっこになるからこそ自分で作らなきゃいけない
64 :
デフォルトの名無しさん :2012/08/28(火) 07:56:58.03
VB6 でアクセスのデータを取り込んでいます。 AdocdとDataGridをフォームに貼り付けてデータを表示させるところまでは 成功しました。 これで,ある特定の列のデータすべてを配列変数に取り込みたいのですが うまくいきません。 DataGridのrowを増やしていくと,表示しているところをこえると「不正な 行番号」となって停止してしまいます。どうすればよいのでしょうか?
行数をあらかじめ調べておいて、そこまでしかrowを増やさない
仮想表モードでなくリアル表モードにする
67 :
デフォルトの名無しさん :2012/08/28(火) 12:59:45.71
>>65 質問に書いたとおり,列の一番下までのデータを読み込みたいので,
rowを増やさなければ意味がないのです。
>>66 リアル表モードって何ですか?
>>64 SQLを発行して、Recordset使えば良いんじゃないの?
>>67 表示を高速にするために、見えている部分だけを更新し
見えてない部分はスクロールして見えるようになったときに更新させるのが仮想表モード。
データ全部分が書き込まれるまでずっと待たなければならないのがリアル表モード。
初歩的なことだよね?
70 :
デフォルトの名無しさん :2012/08/28(火) 19:18:18.67
>>69 ありがとうございます。
初歩的なこともわかっていないものですみません。
このモードの切り替えってどうやるのでしょうか。
71 :
デフォルトの名無しさん :2012/08/28(火) 19:26:11.63
エクセルでも行数に制限があるよね
>>69 氏の言う通り、全部読む必要はない
取り合えず20行表示させればよい
そんで横にスクロールバーを配置して、必要な部分を表示するようにする
全部読むとか非実用的&初心者的発想
72 :
デフォルトの名無しさん :2012/08/28(火) 20:39:04.34
>>71 初心者的発送ですみませんが,質問に書いたとおり,表示させるのが目的ではなく,
全データを配列に読み込むことが目的なので,20行表示させたり,スクロールバー
は意味がありません。ちなみに表示は一切されなくていいのです。
68が答え
74 :
デフォルトの名無しさん :2012/08/28(火) 21:07:02.86
ええっ? じゃあDataGridとか関係ない話で メモリ上の配列に読めばいいだけでは 配列の大きさが判らなかったら大きさを宣言しないで 読みながらReDim Preserveで配列をどんどん大きくすればいいだよ
正直な話、質問者の説明不足で的確な答えが返ってきてないだけだと思う
良く思うんだが、クライアントと話もまとめられない コミュニケーション能力に欠けるプログラマーって 潰しきかないよなって。
77 :
デフォルトの名無しさん :2012/08/29(水) 18:47:37.14
小さいピクチャにアイコンを表示させて それをクリックしたらあるサイトを開くようにしてる ClickイベントであるURLを開くようにしてる訳だ ところがそのURLを他アプリケーションにドラッグ&ドロップで送る必要がでてきた そこでピクチャのOLEDragModeを自動にしてOLEStartDragイベントでURLをvbCFTextでData.SetDataした それで送れたものの、今度はClickイベントが発生しなくなってしまった なるほどOLEDragModeを自動にするとClick、MouseDown、MouseUpイベントは発生しなくなるのだ そこでピクチャのOLEDragModeを手動にしてMouseDown、MouseMoveでクリックなのか ドラッグなのかを判定してドラッグしてると判定したら手動でOLEDragしてOLEStartDragイベントを発生させることにした そのクリックなのかドラッグなのかを判定する部分が微妙なので何かスマートな方法はないかな
>>72 Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = 〜
'New して接続文字列を設定
Call con.Open
Dim sql As String: sql = cleateSql()
'sql = "select 〜"
'必要なSQL文を作成
Set rs = con.Execute(sql)
'この段階でSQL文で要求したデータがrsに入ってる
Do while Not rs.EOF
'データ取得処理。Collectionに入れるなり、Redim Preserveしながら配列に入れるなり
'オススメはいったんCollectionに入れてから、配列に入れなおす。 Preserveでの配列拡張が嫌
'全件取得ならRecordset主体の方法よりこの方法が高速。
'
Call rs.moveNext 'これを入れてないとループ終わらないよ
Loop
Call rs.Close
Call con.Close
http://www.geocities.jp/cbc_vbnet/ADO/recordset.html#cnnection ここの03な。
79 :
78 :2012/08/29(水) 19:05:30.13
>>72 尚、データベースからデータを取得する時は、私の場合、
必ずValueObjectを作成して、それに入れてます。
例えば学生の氏名を管理するマスタがあるとして
カラムが学籍番号、氏名、登録日だったとして
以下のようなクラスモジュールを作成します。
Recordsetから読み込んだ値は、こういうクラスに入れて
Collectionとか配列で持たせます。
Private personNo As String '学籍番号(PK)
Private personName As String '氏名
Private hiduke As Date '登録日
'アクセッサの例( これはPropertyにしても良い )
Public Sub setHiduke(hiduke_ As Date)
hiduke = hiduke_
End Sub
Public Function getHiduke() As Date
Set getHiduke = hiduke
End Function
'アクセッサ以下略
>>77 MouseDownした場所とDragDropした場所が同じコントロールだった場合はClickと同じ処理をしてやればいいだろ?
頭使えやカス!!!
しかしこの場合にMouseDownした時点でDragアイコンが表示されてしまうのでちょっとみっともない。
そこで、現在表示されているマウスアイコンを取得して、そのアイコンをMouseDown時にDragアイコンと入れ替えようとしたが
取得したアイコンをピクチャに描画してビットマップにしてしまうと透明度が無くなる。
イメージリストとか駆使して色々やったが結局気持ち悪いアイコンしかできずに断念したことがある。
アイコンハンドルをそのままDragアイコンに代入する方法でもあれば可能なのだろうが、まあ無理だ罠。
>>78 なんかいらない所にCall付けたがる人ハッケーーン!!!!
ミスター コールマン!!!
>>79 ヒデュークって何かと思ったら日付だったw
デューク...更家...
東郷
スペースサンダー!
87 :
デフォルトの名無しさん :2012/08/30(木) 04:26:04.10
>>80 受け側のOLEDragDropイベントにコードを書かなきゃいけないんだな
悪いけどMouseMoveイベントでのマウスが押されながら動いたかどうか判定でいくわ
MouseDownした時点でDragアイコンが表示されてしまうのでちょっとみっともない
の部分の意味が判らん
クリック操作の僅か0.1秒の間にDragアイコンが表示されたとして
それはみっともないというより、ここからドラッグ操作もできるんだと
ユーザーに知らせるのにむしろ都合いいのでは
88 :
デフォルトの名無しさん :2012/08/30(木) 08:53:29.89
utf-8のデコードにnkf32.dll使ってるんだけど ADOストリームオブジェクトの方がよいの?
>>87 >クリック操作の僅か0.1秒の間にDragアイコンが表示されたとして
>それはみっともないというより、ここからドラッグ操作もできるんだと
>ユーザーに知らせるのにむしろ都合いいのでは
実際実装してから言ってくれないかな?
クリック操作でマウスボタンを押している時間は意外に長い。
ドラッグアイコンが出てクリックするという違和感ははっきり言ってきもい。
俺も机上ではイケルと思ったが実際の動きを見て愕然とした。
しかしその仕様で納品してクライアントには喜ばれたけどな。
嬉しい誤算だ。
90 :
デフォルトの名無しさん :2012/08/30(木) 12:08:57.57
そうか、なら尚更おれのやり方の方がいいな マウスを押したまま動かさない限りドラッグアイコンは出ない
>>90 普通動くよ。そして一度表示されたら超ウザく感じる。残念。
今、コード書いて試してみたら ボタンが押されたままMouseMoveイベントが3回以上連続して発生したら ドラッグアイコンを表示するようにしたらイケた。
>>92 DragModeになったらMouseMoveイベントは発生しないよ?
94 :
デフォルトの名無しさん :2012/08/30(木) 19:24:07.88
OLEDragModeプロパティが自動になってるとMouseイベントが発生しなくなる なので手動=0にして、これはドラッグなのだなと判断したところで手動でOLEStartDragイベントを発生させるんだよ
95 :
デフォルトの名無しさん :2012/08/30(木) 19:28:23.92
>>88 140000文字をutf-8→s-jis変換させたところ
ADOは30msec、NKFは15msecかかった
ただし2回目からどちらも15msecだた
それって読む側のキャッシュが効いたからじゃないのかと
>>94 手動でも同じで、ドラッグモードに入ればマウスイベントは発生しない。
何言っちゃってるの?
>>95 15ミリセカンドで処理が終わるはずねーだろ?
タワケがwwww
どんな測定やったか書かないとね 15.6msくらいの分解能なら17msでも約30msって出ちゃうし
14万文字なら15秒ってとこだろ
1文字あたりかもしれんぞ
必至だなwww
103 :
デフォルトの名無しさん :2012/08/31(金) 01:22:38.49
>>98 おいそこのタワケ
Gettickcountの単位は何だよ
あ、16ビットマシン使用か
104 :
デフォルトの名無しさん :2012/08/31(金) 01:28:16.55
処理時間の測定はGettickcountでやるだろ普通 Timerイベントでなるべく正確に1秒周期で動かしたいときなんか Timerイベント中の処理時間を測定して 1000-(イベント処理に要したmsec)をintervalに再設定したりするだろ しないか、まぁそんなロジックは嫌だがな
105 :
デフォルトの名無しさん :2012/08/31(金) 01:38:30.86
Youtubeのソース見てみ それが14万文字 Youtubeの画面を開く時に14万文字のutf-8をブラウザがs-jisに変換してる 15秒もかかるマシンてどんだけオンボロなんだか
1.5秒か
107 :
デフォルトの名無しさん :2012/08/31(金) 03:28:48.16
URLDownloadToFileの進捗表示ってVBじゃ無理なんだ? Type byte8 byt(7) As Byte End Type Public Sub test() URLDownloadToFile 0, Form1!Text1, "r:\test.dat", 0, AddressOf StatusCallback End Sub Function StatusCallback(Progress As byte8, ProgressMax As byte8, StatusCode As byte8, ByVal StatusText$) As Long StatusCallback = 1 Exit Function
108 :
デフォルトの名無しさん :2012/08/31(金) 03:31:13.60
Winsockでしこしこ受信しながら表示するしかないか
>>104 バカかお前????
ミリセカンドが悪いなんて誰もいってねーよ。
15ミリセカンドで14万文字UTF8→S-JIS変換ができるPCって
どこのスーパーコンピューターなんですかって言ってるんだぜ?アホかよ????
110 :
デフォルトの名無しさん :2012/08/31(金) 09:43:53.89
>>109 何いきりたってんだよ
ばーか
UTF-8ったら一般的にはネット上のhtmlだ
サンプルに取得したhtml14万文字では確かに15msだ
お前が検証したデータと内容が違うってことだ
何でいちいち変な方向から気違いみたいに突っかかってくるかな
頭イカれちゃってるのか?
ADOとNKFがほぼ同じ処理スピードだって話だ
役立たずのクズ野郎が
111 :
デフォルトの名無しさん :2012/08/31(金) 11:09:40.97
まぁHTMLソースなんて大半が半角の英数字記号だからな
QueryPerformanceCounter÷QueryPerformanceFrequency
>>112 いや、半角だろうが14万字の変換が15msは有り得ないよ。
バカかアホだろ?
>>114 ん、そんなもんじゃないの?
$ file *
aaa.txt: UTF-8 Unicode text, with very long lines, with CRLF, LF line terminators
$ ls -l
-rw-rw-r-- 1 hoge hoge 369494 8月 29 17:07 2012 aaa.txt
$ time nkf -e aaa.txt > bbb.txt
real 0m0.035s
user 0m0.029s
sys 0m0.006s
$ file *
aaa.txt: UTF-8 Unicode text, with very long lines, with CRLF, LF line terminators
bbb.txt: ISO-8859 text, with very long lines, with CRLF, LF line terminators
116 :
111 :2012/08/31(金) 15:34:11.31
>>114 何を根拠にそんなこといっちゃってんの? 確認したらすぐにわかるじゃん
あ、SJISか。 $ time nkf -s aaa.txt > bbb.txt real 0m0.038s user 0m0.029s sys 0m0.010s あんまかわらん。
VBで1文字ずつループして、独自変換した自分のコードの実行時間からして、 想像を超えるパフォーマンスだったんだろう。
2GHzのシングルCPUで、10msで2000万クロックだからな。 かなりのことができるぜ。
変換なんてバイトコードを変換テーブルに従って書き換えるだけっしょ しかも半角英数、いわゆるアスキー文字はutf-8もSJISも同じで変換は生じないわけだし ほんの少数の日本語文字を変換するだけで終わるんだから 大した時間もかからんだろ
ほぼ日本語文字でも同じくらいだよ。 夏目漱石の坊ちゃん(SJIS) bocchan.txt: Non-ISO extended-ASCII text, with very long lines, with CRLF, NEL line terminators -rw-rw-r-- 1 hoge hoge 209990 5月 20 23:31 2011 bocchan.txt $ time nkf -w bocchan.txt > utf8.txt real 0m0.027s user 0m0.021s sys 0m0.007s $ time nkf -s utf8.txt > sjis.txt real 0m0.034s user 0m0.031s sys 0m0.003s
なんでさっきからunixのシェル風なの?
ん?時間測りやすいからUnixのシェルでやってる。 Windowsでnkf.dllだかを使っても、そんなかわらんでしょ。
UnixとWindowsでは同じ処理を同じアルゴリズムで組んでやれば同じだけの速度が実現できます
もう、めんどくさいなぁ。 > timeit nkf -w bocchan.txt > utf8.txt Version Number: Windows NT 5.1 (Build 2600) Exit Time: 5:36 pm, Friday, August 31 2012 Elapsed Time: 0:00:00.078 Process Time: 0:00:00.078 System Calls: 1355 Context Switches: 413 Page Faults: 463 Bytes Read: 215136 Bytes Written: 314342 Bytes Other: 150502
おまえさん偉いなあ わざわざ
そして、ソースが14万字であることを永遠に証明できないたわけ者なのであったwwww 無理すんなw
さすがの俺様も、
>>128 が何を欲しているのかさっぱりわかりません。
取りあえず
>>128 のPCが、Pentiumの66MHzなんだろ?
131 :
デフォルトの名無しさん :2012/08/31(金) 23:27:35.44
ここに粘着してる気違いのために、もう一度検証したら
どなたか付き合って頂いてたようでご苦労さまでした
この気違いを以下「タワケ」と呼び、どのような検証をしたのか問い詰めます
>タワケ
まさか検証もせずに想像で人様をバカ呼ばわりしてんじゃないだろな
俺が興味あるのはお前の計時方法だ
教えろよ
じゃ、同じソースを使うぞ
http://www.youtube.com/watch?v=ZK28ZKbKAic これをURLDownloadToFile等でutf-8のテキストを取得する
ブラウザで開いて保存じゃないからな、あれは既に変換済みだから
これもutf-8→s-jisは15msecだった
変換後文字数は147982文字だ
じゃ、次はお前の番だ
132 :
デフォルトの名無しさん :2012/09/01(土) 08:07:36.84
タワケはよ
133 :
デフォルトの名無しさん :2012/09/01(土) 08:13:23.55
普通なら、オレがやったらXX秒かかったけど それ、どうやったの? とか言うのに、タワケときたら頭ごなしにバカ、カス呼ばわりだもの タワケの社会性の無さは目を見張るものがある バカなくせにプログラムなんぞ組まされて一度発狂してるのだろう こんなとこにいないで早く病院に行けばいいのに
134 :
デフォルトの名無しさん :2012/09/01(土) 08:22:25.68
しかし、タワケなんて言葉を使うのはかなりの年寄りだな 気がふれて社会性もない孤独な年寄りのタワケはどうやって生きてるのだろう
「戯け」が年寄りとか日本語知らないだけじゃないの? なんだか必死だなぁw
136 :
デフォルトの名無しさん :2012/09/01(土) 16:45:29.04
僅か15msで14万文字UTF8変換?寝言は寝て言えよwwww
14万文字と言ったら一文字3バイトとして 42万バイト。420,000。たったの420KBだ。 高速SSDで500MB/sでるとして、 1秒あれば、5MB。 100msあれば、500KB読み込み可能 あとはわかるな?
変換なんだからHDDの読み書き時間は含めなくていいだろう。 キャッシュがきくかどうかで大きく変わるから HDDのことは忘れて、メモリに入っているデータを 処理する時間のみを見るべきだ。
>>138 あらあら、急に弱気になってしまってw
無理もないよね。
>>139 俺、このスレに久々に書き込んだんだけど、
誰かと勘違いしてるだろw
仮に最高性能のCore i7CPUの1次キャッシュ及び二次キャッシュに全変換前データと変換後データが入る前提でも 14万文字へんかんを15msでやって退けることは到底無理だろう。ただしこれはVB6でという話ね。 C++でアンマネージコードでの変換なら計算上十分可能でしょう。
142 :
デフォルトの名無しさん :2012/09/01(土) 17:27:39.65
>>141 VB6だってスカラー型変数だけの使用ならC++に匹敵するコードを吐くよ。
ループの内側でString型とか使ったらJavaより遅くなるけどそれでもPerlよりは速い。
14万文字と書いてるから多いように感じるが、 For i = 0 To 140000 Next i たったこれだけのループだぞ。 何秒で終わるよ。
UTF8がVBでネイティブに対応しておらず、 可変長文字列だからバイト配列に入れることになるだろうね。 そしてバイト配列に入れるところは、ディスク読み込みになるけど ディスク読み込み時間は到底15msには収まらない。 だからこの時間は省いて考えていいのだろう。 あとはその配列を処理していくことになる。
>>143 ループの内側を書けないのは突っ込み所満載だからだろうな。
>>144 ディスクのアクセス時間を除外するなんて前提だと非現実的な話になってしまう。
元々が一回目と2回目の速度が変わったという提起なのだから。
現実を目の当たりにして少しびびって来てない?
CPUが2Ghzだとして、 2,000,000,000 クロック/s。 15msだと . 30,000,000 クロック/s。 140,000 文字 もちろん、1文字(3バイト)を1クロックで終わらせることは出来ないよ。 でもねぇ。200 クロックもあれば終わるでしょ? データをルックアップして、 新しい領域にコピーするだけなんだから。 この程度の量であればI/Oのほうが ボトルネックになる。
>>144 > ディスクのアクセス時間を除外するなんて前提だと非現実的な話になってしまう。
> 元々が一回目と2回目の速度が変わったという提起なのだから。
一回目と二回目の速度が変わったのは
二回目はデータがキャッシュされて
ディスクアクセスがなくなったからでしょ?
ディスクアクセスの時間は500MB/sの高速SSDでも
15msで75KBしか読み込めない。
データが14万件であれば420KBになるわけで84msはかかる。
HDDなら100MB/s程度だから、84msの5倍で420msはかかる計算になる。
変換自体は単純なループと配列へのアクセスしか無いから この程度ならVBでもネイティブになる。
とりあえず
>>95 が検証したコード出せばいいんじゃね
あとはそれぞれの環境で実証してみればいい
個人的には具体的な環境を書かないのに具体的な数字を出す
>>95 は信じられん
150 :
111 :2012/09/01(土) 18:39:36.99
コードを書くのはいいが マッピングテーブルを作るのが面倒だ。 データくれ。 速度を考えるとバイト配列そのままの 形式になっていて欲しいんだが。
Unicodeと非Unicodeの相互変換は 順番がランダムに並んでいるから 計算ではもとめられないんだよね。
153 :
111 :2012/09/01(土) 18:48:57.42
>>153 ADOを使った瞬間、14万文字変換/15ms神話は一瞬にして崩壊する。
しかし、机上計算でも無理の物をどうやって実装でこなすのかな?
VB6ってマルチスレッドできたっけ?
理論上はマッピングで高速処理可能だからって事なのだろうけど VB6はバイト配列の操作でも1回だけ空のOLEコールが介在するからな。 これが14万回ループするだけで3秒はゆうにかかるでしょうな。
> VB6はバイト配列の操作でも1回だけ空のOLEコールが介在するからな。 しないよ。 バイナリに変換してみ。 普通にメモリアクセスだけで終わってる。
157 :
デフォルトの名無しさん :2012/09/01(土) 19:37:28.71
>>154 タワケは机上計算で反論してたのかよ
しかもマルチスレッドでタイマー動かして時間計測するつもりか
超初心者じゃねーか
なんなんだよ偉そうに
"空のOLEコール" で検索 "空のOLEコール"との一致はありません。 頑張って違和感を感じないと思われる言葉を作ったんだろうなw だがそんな言葉はない。そんな処理も行われない。 行われるというのなら、空のOLEコールとはなんで どんなことを行うのか説明してみろ。
変換テーブルをメモリ上にロードするだけで15msかかりそうな気がする
ファイルからのロードがどれくらいかかるかは
>>147 で指摘済み。
15msは大きくこえるのはHDD/SSDの速度から明らかなので
今はキャッシュが有効になってメモリからのロード状態になっているのが前提。
161 :
デフォルトの名無しさん :2012/09/01(土) 19:59:13.74
■タワケの特徴
・検証もせずに罵声を浴びせて反論
・わずか7行の文字コード変換プログラムが書けない
・時間の測定方法すら知らないド素人
■タワケの暴言
>>96 >15ミリセカンドで処理が終わるはずねーだろ?
>タワケがwwww
>>109 >バカかお前????
>どこのスーパーコンピューターなんですかって言ってるんだぜ?アホかよ????
>>114 >いや、半角だろうが14万字の変換が15msは有り得ないよ。
>バカかアホだろ?
>>128 >そして、ソースが14万字であることを永遠に証明できないたわけ者なのであったwwww
>無理すんなw
>>136 >僅か15msで14万文字UTF8変換?寝言は寝て言えよwwww
162 :
デフォルトの名無しさん :2012/09/01(土) 20:07:22.52
単純変換だけでCore i7 3GHz のDell PCで889msかかった。 Option Explicit Dim u8sjis(140000) As Integer Private Function intSjis(u8 As Long) As Integer intSjis = u8sjis(u8) End Function Private Sub MousouTest() Dim sjis As Integer For i = 0 To 14000 - 1 sjis = intSjus(i) Next End Sub
>>162 1/10の1万4000回でもそんなにかかるもんなんだな。
14万回だったらその10倍かかるということ?
165 :
デフォルトの名無しさん :2012/09/01(土) 20:10:43.41
タワケが自分で検証して「何秒かかりました」と報告すれば済むものを 気違いのように吠えまくる 生きてる価値が全くない、早く土に帰れ
15msというのは計測ミスっただけだろ。
167 :
デフォルトの名無しさん :2012/09/01(土) 20:13:33.10
>>163 すまん。ケアレスミスだったorz
140000に修正したら9431msかかった
>>162 ちゃんとexe作ってやらやれよ。
でないとコンパイルされないだろ。
>>162 話の流れを全く読まずにレスするけど、なんかいかにもVBerっぽいコードだなそれ。
何で配列をそのまま渡さずに要素を列挙して一つづつ渡すんだよw
っていうか、VBは引数をデフォでは参照渡しすること知らないのかな。
せめて値で渡せって。
170 :
デフォルトの名無しさん :2012/09/01(土) 20:21:16.47
>>162 キタ━━━━━(`・ω・´)━━━━━ !!!
これがタワケの検証コード??
じゃあ、今までのADOストリームオブジェクトとかNKFとか
何のことか知らずに首突っ込んできたんだ
>>169 いや、それ以前に今回の場合関数呼び出しをする必要がない。
簡単なビット演算を行なって1〜4バイト(昔は6バイト)を合成し
配列のインデックス値として使うだけだから。
172 :
デフォルトの名無しさん :2012/09/01(土) 20:31:29.99
>>118 正解キタ━━━━━(`・ω・´)━━━━━ !!!
あかん、目眩がしてきた
気違いタワケに付き合ってる場合じゃないわ
VB6使いは必死になると怖いねw
175 :
デフォルトの名無しさん :2012/09/01(土) 23:48:49.97
気違いタワケは最初、ちょっと乱暴だがそういうノリの奴なんだと思ってた しかし実態は何も知らないド素人!!!! お前、邪魔だから早く死ね
>>155 空のOLEコールワロタw
ナノ純銀除染みたいなもんかwww
>>162 変換はADOストリームかnkf.dllを使う前提なわけだが
気になったからADOストリームで実験してみた
153,211 バイトのUTF-8のファイルを変換して150,017 バイト
所要時間が、ファイルの読み書き含めて2回目以降で200ms弱
Core2Duo E6550の仮想マシンでこのスピードだから
15msで14万文字は早いマシンなら行けるかもしれん
仮想マシンはI/O、つまりディスクが遅い。
179 :
デフォルトの名無しさん :2012/09/02(日) 02:01:44.85
>>177 バーチャルPC?ハンデありすぎでしょう
書き込み時間まで変換時間に含めたら
プリンター出力時間も含めなあかんとか言い出す奴が出てきそう
この15msを唱えてる人も人間としてちょっと???なところがあるねww ほほえましいVB6信者共がよwww
ADOよくわかんないけど こんなかんじ? Dim d As Byte(140000) Dim r Dim a As New ADODB.Stream Dim b As New ADODB.Stream a.Open a.Type = adTypeBinary b.Open b.Type = adTypeText b.Charset = "Shift_JIS" a.Write d a.Position = 0 a.Type = adTypeText a.Charset = "UTF-8" b.WriteText = a.ReadText() b.Position = 0 b.Type = adTypeBinary r = b.Read() a.Close b.Close Set a = Nothing Set b = Nothing
183 :
デフォルトの名無しさん :2012/09/02(日) 11:18:48.26
>>180 唱えてるってか?
20行程度のコードをちょこっと書いて検証すればいいだけなのに
検証もせずに↓だぞ。早く検証して謝罪しろ
>15ミリセカンドで処理が終わるはずねーだろ?
>タワケがwwww
>バカかお前????
>どこのスーパーコンピューターなんですかって言ってるんだぜ?アホかよ????
>いや、半角だろうが14万字の変換が15msは有り得ないよ。
>バカかアホだろ?
>そして、ソースが14万字であることを永遠に証明できないたわけ者なのであったwwww
>無理すんなw
>僅か15msで14万文字UTF8変換?寝言は寝て言えよwwww
184 :
デフォルトの名無しさん :2012/09/02(日) 11:35:10.43
スレチですが、ADOとNKFで吐き出す文字コードに違う場合があって 調べたところ、ADOの場合、存在しない文字だと"?"を出力します 具体的にはUTF-8のBOMという、本来先頭にあるべきコードが中に散りばめられているソースがあって そうなると"?"が入り込んで使い物にならないことが判明 NKFはそれを無視してくれるのでNKFにすることにしました 気違いタワケが早く死にますように。
185 :
177 :2012/09/02(日) 11:45:02.41
>>178 2回目以降はどうせキャッシュに入るだろうって前提
ちなみにファイルは別マシンのRAMディスクをネットワーク共有で読み書き
>>179 仮想化はVirtualPCじゃなくてHyper-vな
ほかの仮想マシンは全部止めてあるからそれほどのハンデはないと思う
ま、15msで終わったってやつは、ソースと環境さらしてほしいが
今時のマシンで10倍性能差がでるなら買い替え検討するわ
>>185 この場合、サンプルコード晒さなきゃ、証明にゃならんないと思われるな
しかも検証条件を後から出してたら検証にもなってない
187 :
177 :2012/09/02(日) 13:08:32.94
>>186 ソースってのはソースコード、つまりプログラムのことな
検証条件はソース見れば解るだろう
どんな環境で、どんなプログラムのどこからどこの処理時間が15msか知りたいんだよ
まさか実測せずに適当な数字を言ったわけじゃないだろう
>>185 > 2回目以降はどうせキャッシュに入るだろうって前提
> ちなみにファイルは別マシンのRAMディスクをネットワーク共有で読み書き
仮想マシンではそうはいかない。
マシン自体はメモリのつもりでも、
ディスクに書き込まれていることもある。
それと、仮想マシンは時間の精度がよくない。
時間がずれることすらある。
そんなもんで、msレベルの計測はできない。
>>187 すげぇな...
自分のサンプルコードは晒さず、相手のサンプルコードは要求するんだ
コードうんぬんより、どんなマシン、環境でその速度なのか知りたいが
すごいだろ!俺って15msだぜぇー! すごいだろ!俺って15msだぜぇー! すごいだろ!俺って15msだぜぇー! すごいだろ!俺って15msだぜぇー! すごいだろ!俺って15msだぜぇー! これも可能みたいだし
194 :
デフォルトの名無しさん :2012/09/03(月) 09:00:49.26
タワケと言った俺が来ましたよ? なんかすごい事になってますなぁ まさに タワケ がwww
誰も突っ込んでないので、念のため突っ込んでおく。
>>147 > ディスクアクセスの時間は500MB/sの高速SSDでも
> 15msで75KBしか読み込めない。
15msで読み込めるのは、7.5MBです。
> データが14万件であれば420KBになるわけで84msはかかる。
1msで読める量は500KB。よって、420KBは1ms未満で読める。
420KBを読むのに84msもかかるなら、1000msだと5,000KBしか読めないことになるよ(5MB/s)。
> HDDなら100MB/s程度だから、84msの5倍で420msはかかる計算になる。
100MB/sなら、1msで読める量は100KB。
よって、420KBは4〜5msで読める。
ひょっとして、1MB=1000KBってことを知らないのか、1sec=1000msってことを知らない人なのかな。
ディスク読み込み時間を含めることも 含めるかどうか議論することも 板違いだから、出て行け。
>>191 MacBook Pro(Core2 Duo 2.26GHz, HDD, 8GB)上のParallels7上のCentOS 6.3(2MB割り当て)と
Athron 64 X2 5600+ 3GBのWindows XP, Intel SSDで計測。
自分で試すのが早いよ。坊ちゃんは青空文庫から入手可能。
あと、Windowsでnkf.exeを使ったのは失敗だった。nkf32.exeを使うべきだった。
何が問題になってるか、まじでわからん。 UTF-8で14万字程度の文字列を、SJISに変換するのに15msくらいしかかからないというのは ありえない、っていう主張なのか? さらに、VBでは無理で、nkfだって無理だっていう主張なの?
nkf32.dllは、変換関数をexportしてんだから、その呼び出し前と後で時刻計測するだけだろ はよやれ
>>199 基地の外の人が一人暴れてるだけだから、無視してOK
>>199 タワケと言ったオイラがやってきましたよ?
VB6での実装である以上、15msは絶対不可能です。
EXEにすると速くなるとかそんなレベルの話じゃないですわwww
もう飽きたから次の話題に行かない?
>>202 なんでnkfとか使わないの?
宗教的理由?
>>202 ADOはVB6で実装されてはいないと思うし
nkfもVB6では実装されていないと思うが
VBがやるとこはnkfなりADOなりを呼び出すだけだろ
15msが不可能かどうかは知らん。計って出来たって人がいるから出来たんだろ
>>207 >ADOはVB6で実装されてはいないと思うし
バカ
実装の意味が分かってない
おらバカなんでわからんなぁ 君の言う実装の意味を教えてくれないか
210 :
デフォルトの名無しさん :2012/09/03(月) 21:27:17.59
タワケはまだ作れてないのか 一体、何日かかってんだ、どんだけ低能なんだよ 常識は無いわ、知能は低いわ、気はふれてるわ 生きてるだけで周囲にどんだけ迷惑かけてるか考えろ
14万文字は少ない。 よってVB6でも15msもあれば終わる。 ということか。
212 :
デフォルトの名無しさん :2012/09/03(月) 22:52:37.97
>>198 SetNkfOption "sx"
NkfConvert 出力バイト配列, 入力バイト配列 '入力バイト配列末尾はNullのこと
たった2行ですのにね
213 :
デフォルトの名無しさん :2012/09/04(火) 09:25:02.16
タワケは未だに検証も謝罪もしねーのか とんでもねー野郎だ ド素人タワケにゃ判らんだろうがプログラム作る人間は寝食忘れてデバッグするもんだ お前がこのスレのバグなんだよ お前をデバッグしたい 裁判所か警察経由でプロバイダに個人情報の開示要求して家に乗り込んでやろうか
個人情報の開示要求 理由:お前をデバッグしたい なんだそれ
macbookでvb・・・?
15msで出来ないって喚いてる奴は自分で試そうともせず また 検証結果を晒してる奴はVBを介さない結果しかよこさない 何この不毛スレ
217 :
桃白白 :2012/09/04(火) 14:26:37.77
>>216 つまり桃白白の出番というわけか。ちょっとまってろ目薬差してくる。
面白そうだからVBScriptでやって見た... S = Timer Set IStream = CreateObject("ADODB.Stream") Set OStream = CreateObject("ADODB.Stream") IStream.Charset = "Shift-JIS" OStream.Charset = "UTF-8" IStream.Open OStream.Open IStream.LoadFromFile "bocchan.txt" IStream.CopyTo OStream OStream.SaveToFile "bocchan-copy.txt", 2 IStream.Close OStream.Close E = Timer MsgBox E - S Core2 Quad Q8400でOSはXP SP3ざんす 初回は300ms付近だけど、2回目以降なら15.625msだったよん キャッシュに乗ったら、15.625msだったねぇ
たかだか数百KBの文字コード変換が数十msのオーダーで終わるはずないと思ってる人は、 100MBのファイルのmd5sumを計算するのに、どれくらいかかると思ってるのだろうか。
>>219 あの手の人は、
>>218 の結果で0.625msオーバーしている事を取り上げて、15msでは終わってないとか言い張るからねぇ...
221 :
桃白白 :2012/09/04(火) 16:01:23.17
223 :
デフォルトの名無しさん :2012/09/04(火) 23:35:12.48
15msでできるとかデータ捏造してる自演君 毎日乙
数字が出たら捏造という。答えを封じる最高にバカな方法の一つだな。
つ、15msとか詳細条件提示せずに言い放った無責任な子供が問題なだけだろ? アカデミックにつられるのもいいが、大人としては悲しいね。
227 :
デフォルトの名無しさん :2012/09/05(水) 11:48:45.63
15msの言いだしっぺは引っ込みがつかなくなった?
228 :
デフォルトの名無しさん :2012/09/05(水) 23:52:18.26
■ここまでのまとめ■ (´・ω・`)<文字コード変換は、ADOとNKFどっちがいいにょ? ( ^ω^) <両方やってみたお!14万文字でどっちも15msかかったお! <丶`∀´><15ミリセカンドで処理が終わるはずねーだろ? <丶`∀´><タワケがwwww (´・ω・`)<タワケは何秒かかったん? <丶`∀´><バカかお前???? <丶`∀´><どこのスーパーコンピューターなんですかって言ってるんだぜ?アホかよ???? (´・ω・`)<タワケは検証しないで言ってるん? <丶`∀´><いや、半角だろうが14万字の変換が15msは有り得ないよ。 <丶`∀´><バカかアホだろ? (´・ω・`)<タワケはADOとかNKF知らないん? <丶`∀´><そして、ソースが14万字であることを永遠に証明できないたわけ者なのであったwwww <丶`∀´><無理すんなw (´・ω・`)<タワケはプログラム作れないん? <丶`∀´><僅か15msで14万文字UTF8変換?寝言は寝て言えよwwww
>>218 これ、うちの環境(Core2Duo E8400)でやっても2回目は15.625msだった
VBSのタイマー制度の限界がこの数字でホントはもっと早いかも
なんでおまえらのPCそんなにハイスペックなんだよ・・・俺なんて10年前のPCを現役でまだ使ってるというのに・・・
10年前じゃあるまいし、いまどき数万で当時の数十倍の速度のPCが買えるのに 数十倍じゃきかないか?なんにせよ捗るぞ
てことは何か おまえらみんなwin7に古いvbインストールして使ってるってことなの?
VirtualPCだよ
>>230 10年前のPCがまだ動いてるなんてすごいな。
>>232 悪いことは言わないから今すぐ Windows 7 Pro(←ここ重要) が入ったパソコンを買うんだ。
今なら仮想マシン用XPライセンスがついてくる。急げ。間に合わんぞ。
金に余裕があるならUltimateを買え。仮想マシン用XPライセンスが4つついてくる。
そして一応、1,200円でWindows 8 アップグレードを買っておけ。今年中にな。
今使ってるXPも3,000円くらいでWindows 8 アップグレードが買えるから買っておけ。
これも仮想で使うことが出来るから無駄にはならんぞ。
ちなみに仮想マシンを使う場合、CPUは Core i5 がおすすめ。 i7 はコスパも熱効率も悪い。 i3 はVT機能が一部削られてる。 セレロン?仮想マシン使うのにそんなごみ買うな。
Core i5なんて一番中途半端なものをすすめるなアホwwww
>>236 仮想が前提じゃないなら Core i3 で十分と思うけど
バージョンアップするたびに仮想化ソフトの要求はアップしてる。
Windows 8 は付属のHyper-VがVT-xを要求するんで、どうせならVT-dにも対応しておいたほうがいい。
Core i7 でもVT-dに対応してないのがあるみたいだけど
Ivy Bridge ならCore i5 でもVT-dだけじゃなくTXTにも全種対応してる。
モバイル向け Ivy Bridge はまだないんだな。
>>237 ダブルグリスバーガーがそんなに美味しいのかい?
マクドナルドで\100で売ってるならまだしも
Windows 8程度ならCore i7の最上位で問題無いだろ。
最下位で問題ないのだから、 最上位で問題ないのは当たり前だと思うが?
熱放散に優れる最下位の方がマシンが長寿命 上位は下位のすべての性能を上回っていない
金がないならしゃあない
放散はCPUのパッケージが同じなら差はないんじゃね 発熱が少ないだけで 結果長持ちするのかどうかはしらんが。CPUが寿命で壊れたなんて話は聞いたことがないし
243 :
デフォルトの名無しさん :2012/09/10(月) 01:05:53.63
なぜ朝鮮人が不気味に見えるのか、それはちょっと不思議に思っていた その理由が、もしかしたら判ったかも知れない。 終戦直後、敗戦に打ちひしがれている中、 日本軍の武器を持った朝鮮人に襲われたご先祖様。 日本経済の7割も奪ったというから、朝鮮進駐軍は虱潰しに襲っていたことだろう 白昼堂々と殺人・強姦・略奪が行われ、どれほど無念であったろうか そのご先祖様の無念の念がとり憑いているのだと、ふと感じた 韓流などとんでもない、仇をとらねばならない立場にいることを忘れてはならない
北朝鮮ではVB6が大流行なんだって 遅れてると言えばそれまでだが .netを使わないのは頭が弱いからか?
トリップ
ハードがしょぼいからだろう
>>246 スゲー洞察力。感服しましたm(_ _)m
248 :
デフォルトの名無しさん :2012/09/13(木) 19:41:03.73
なんかVB6の新バージョンが出るみたいね。 .netでないVBだけどクラス対応とか言語仕様ではVBnetにかなり近づけているとか。 一旦VB6ユーザーを引っ張って.netに落とす戦略なのだろうが アンマネージコードを吐くVBnetなら使ってやってもいい。
>>248 クラス対応は元々だが…
継承が使えるようになるのかな?
あれはインタフェース継承でなく実装継承が可能なクラスって意味だろうな。 一応クラス仕様はVB.netに限りなく近づけているそうだから フレームワークを使わないってだけでVB.netに近いものになるだろうね。 OLEオートメーションは相変わらずバリバリ使う仕様でランタイムも必要らしいが .netの導入よりははるかに楽だろう。
VBneoってwww net臭せぇwww
マジで?
253 :
デフォルトの名無しさん :2012/09/13(木) 20:31:54.12
MSの社員しかまだ知らないはずだろ? リークしていいのか?
Windows RTの開発も出来るそうだから、RT拡散のためには手段を選ばんという事かもな。
.netみたいに重くなっちゃうん?
256 :
デフォルトの名無しさん :2012/09/13(木) 22:10:05.26
Metroスタイルの中間言語からネイティブコンパイルと言う発想は評価できるが 今のCLコンパイラほど最適化されたコードが出るかはなど実行性能は不明。 まあ期待しないで待ってようや。
簡単に言うと、.Net Frameworkの中間言語をOLEオートメーションで実装した別バージョン。 中間言語レベルでは.Net Framework下でもRT下でも動く。
風説の流布じゃないだろうな
なんで旧VB用のスレで.NETの話題で盛り上がってんだ?.NETの資源を使おうって話か?
260 :
デフォルトの名無しさん :2012/09/15(土) 04:31:21.37
VBにもマルチスレッドが欲しいお
261 :
デフォルトの名無しさん :2012/09/15(土) 06:41:54.87
テキストファイル→テキストボックスへの一括読み込みについてVB6/XP 一括読み込みは fno% = FreeFile: Open "C:\HogeHoge.Txt" For Binary As fno% Text1 = Input(LOF(fno%), fno%) Close fno% や、バイト配列でGetや、FileSystemObjectでReadAllの方法もありますが いずれの方法でもUnicodeで131,070バイト(s-jisのファイルにして66kB程度)しか読めない エラーにもならずに、読み込んだものと思ってたら、途中で切れてた状態
262 :
デフォルトの名無しさん :2012/09/15(土) 06:56:11.81
確かに、以前はテキストボックスの容量が小さく制限されていたけど 今はどのくらいだろうか、試しに文字を入れていって、3MBでやめたけど 一発でなく、ずるずると入れるならメモリ不足になるまで入りそう 問題は、Text1 = t$ の時点で、131,070バイト以降がカットされること (Text1はMultiLine=True、ScrollBars=両方) 試しに Text1="" Text1.SelText = Left$(t$, 50000) Text1.SelText = Mid$(t$, 50001) と分けたら入った どういうことでしょう
にちゃんのしかもこんな辺境すれで、MSの社員しか知らない情報が リークされるとか、あほすぎ。
265 :
デフォルトの名無しさん :2012/09/15(土) 15:28:04.72
MSの社員でも新VB6にマルチスレッドは無理だろ? 欲しいけどね
266 :
デフォルトの名無しさん :2012/09/15(土) 15:28:54.24
タイマーがアイドル時にしか動かないのを 別スレッドで動くようにしてもらうだけでいい
>>266 それだけでいいのなら、
別exe起動すればいい。
セマフォも制御できんくせによく言う。 予期せぬ再入でコード進行はメタメタ。 デバッグも出来ない哀れな初心者。 マルチスレッドは100年早いわ。
自分がマルチスレッドを理解するのに100年かかったからって 他人も同じだと思うなよw
>>269 7年かけたが今でもまだ致命的なミスがたまにある。
そんなに気を配ってもやってしまう些細なミス。
シングルスレッドの有難さを知れやアホが。
271 :
デフォルトの名無しさん :2012/09/15(土) 16:06:10.90
マルチスレッドでの開発にはまるでOSのカーネルを作成するときのような慎重さが必要だよね。 100時間以上正常動作してたのにたまにハングアップとかいうバグが多いからデバッグは不可能に近い。 だからこそ設計時に完璧さを要求される。バグを追いかけるよりゼロから作り直した方が早いのがマルチスレッド。 VB6使ってて、とりあえず実行してみてエラー出なければラッキー、エラー出たらそこを直せばいいや なんてやってる奴にマルチスレッド プログラミングが出来るはずかない。
そもそもしないし。
> VB6使ってて、とりあえず実行してみてエラー出なければラッキー、エラー出たらそこを直せばいいや > なんてやってる奴に お前がそうだからって、他人も同じだと思うなよw
274 :
デフォルトの名無しさん :2012/09/15(土) 16:16:49.67
>>273 よくわかったな。なんでバレちゃうんだろ?w
>>261-262 そもそもUnicodeのテキストファイルはVB6にとってはバイナリファイル
バイナリでオープンしても、Inputで読めばテキストとして読む
InputBで読め
そしてTextプロパティのヘルプには
>テキスト ボックス (TextBox) コントロールの Text プロパティに設定する文字列は、
>MultiLine プロパティが真 (True) の場合は最大で約 32KB まで、
>偽 (False) の場合は最大で 2,048 文字 (半角の場合) までに、
>それぞれ制限されています。
ってあるからたぶん普通に制限値で引っ掛かってるだけだな
(どうも制限64Kな気もするが。文字コードがらみか)
なんでこんな制限があるのかはしらん
SelTextはこの制限にかからんから入るんだろう
そう考えるとTextBoxそのものの制限ではなさそうだが
> なんでこんな制限があるのかはしらん 制限のほとんどは過去との互換性。 いつからその制限があるかを調べればわかるよ。 どうもね。現在のことしか思いつかない人がいるよね。
>>276 文句があるなら、お前が互換性が理由だって証拠やいつからその制限があるか提示したらどうだね?
そんなことはすぐに思いつくが、ホントにそうなのかどうか確認できんから知らんって書いただけ
そしてホントにSelTextならその制限越えれるのかどうかも検証してないが
SelTextなら制限かからないなら、TextBoxの制限ではないわけで、そこで制限かける意味が薄い
たとえば.NETのTextBoxは、MaxLengthのデフォルト値は32,767らしい
指定すればそれ以上の数値でも問題ないのに、その文字数で制限するのはまさに互換性のためだろう
そうであればますますVB6のTexeBox.Textの制限の理由は不明だが
是非お前にその理由を説明してほしいもんだ
VB6アプリは9x系でも動く 9x系のメモ帳は32KBしか編集できない。 これぐらいのヒントで十分だろう。
279 :
デフォルトの名無しさん :2012/09/16(日) 07:00:27.90
>>275 >Text プロパティに設定する文字列は・・
それですね
ヘルプに書いてありましたか、すみません。
そこに制限があるのだけど、TextBox自体には別の方法で入ってしまうし、読めてしまう。
でも、Textプロパティの代入の制限を超えた部分をSelStartで指すとエラーが発生する。
TextBox本体は時代とともに拡張されたけどインターフェイス部が取り残された感じですね
280 :
デフォルトの名無しさん :2012/09/16(日) 07:11:06.28
シングルスレッドの有難さって、それは複数で開発してるとか 他人が作ったのを引き継いだ場合はそうだろうね そりゃデバックの困難さが段違いだもの たまーに発生する異常を、突き詰めて突き詰めて辿り着くのは ここに排他処理ができてないじゃないかーってことで それは判るんだけど、自分で設計、作る立場なら、 その機能は欲しいし、ないよりはあった方がいいわな
クラスを書いたら 「わざわざ難しく書かないでよ」 と言われた・・・謎
VB6 のクラスはなんちゃってクラスだから、本当に必要なとき以外に 使う奴はアホだと思う。
おれはアホだったのか
俺もアホだ
>>282 ほんとうに必要な時と
そうでない時の例を上げてください。
286 :
デフォルトの名無しさん :2012/09/17(月) 23:38:40.29
with event とかはクラスじゃなきゃ出来ないんじゃなかったっけ? あれはVBAか
コードの見通しを考えてクラスにする事が多々ある。
本当に必要な部分を*.frmと*.basにそのコードを書いて、その他は全部classで書く、 くらいでいいと思うけど。 classにすることで、CTOR/DTORが使えるし、カプセル化はできるし、イベント監視することも できるし、限定的ではあるけどポリモーフィズムも使える。 xUnitと相性が良いというのもメリット。
クラスでraise eventして、frmでイベントハンドラ書くやり方が楽
WindowsProcをフックしてメッセージ横取りした場合 rise eventが効かないのは致命的だけどな。
mjd?
WindowsProcとかwww
>>290 ちゃんと動くけど?
・
http://homepage1.nifty.com/rucio/main/tyukyu/tyukyu9.htm のコードをコピペして、Command1, Command2, Text1を持つForm1を作る
・Form1にCommand3を追加後、以下のコードを追加
Form1.frm:
Dim WithEvents obj As Class1
Private Sub Command3_Click()
Set obj = New Class1
obj.foo
End Sub
Private Sub obj_FooEvent()
Debug.Print "event fired."
End Sub
Class1.bas:
Public Event FooEvent()
Public Sub foo()
RaiseEvent FooEvent
End Sub
・exeを起動後、Command1をクリックしてWindowProcをフック後、Command3をクリックすると、FooEventが発火するのが確認できる
>>290 動くコードが出たんだから、問題が発生するコードはよ
WindowsProcじゃないやん!
問題が発生するコードを出せば話は終わる。 なにもないなら、この話題はなかったとして扱うのが 科学者風w
効かないのは、 rise event だよ? 勘違いしないでね。
Rise Eventはサブクラス化でも効かない
「サブクラス化」ほど謎単語ってないよな
いまだにサブクラス化の意味がわからん。
継承するってことだよ
継承はinheritance サブクラス化はsubclassing subclassingのうまい日本語訳がなかったから、サブクラス化ってしたんだろう。
でも継承のほうがイメージ沸くよ
いや、継承じゃないし。
うっそ
マイクロソフトは謎な単語が多くて困る コールバックルーチン取り替えるのがMS語のサブクラス化だっけ?
お前ら何やってんの? Windows API用語の サブクラス化だろ。
マイクロソフトが、っていうより英語がそういう言語なんだろう。 新しい概念が出来た時、語彙を増やして対応する傾向が強いのが日本語。 対して英語は既存の語彙の意味を増やす。 っていうか、クラスにしろサブクラウスにしろ、OOPの文脈でしか通じない用法を 文脈と無関係に使える言葉みたいに思い違いをしてる奴の方が困ったちゃんだろ
309 :
デフォルトの名無しさん :2012/09/20(木) 01:01:36.42
>>308 サブクラウスってケンタウルスの親戚か何かか?
思い違いを指摘できる立場ではなさそう。
サブのクラウスさんに決まってるだろ。くだらないこと聞くな。
ウィンドウメッセージをフックしてコントロールに機能を追加するのがサブクラス化だろ?
sstabコントロールについてなのですがタブごとに背景色を 変更することはできないでしょうか? それらしいプロパティが見つからないのですが。
313 :
デフォルトの名無しさん :2012/09/20(木) 18:55:50.91
sstabなんて知らにゃい
314 :
デフォルトの名無しさん :2012/09/20(木) 19:03:40.26
非標準のコントロール使うとあとが面倒だよね タブならチェックボックスとフレームで作ってる 見た目はダサいけど、チェックボックスのStyleを変えれば ボタンになって色もつけられる どれか押したら他をOFFするコードは自前で書かないといけないけど
(´・ω・`)…
>>314 そのTABじゃVisualStyleの効果ないじゃん。ダメだね。
317 :
デフォルトの名無しさん :2012/09/21(金) 04:10:34.92
オプションボタンにもStyleプロパティがあったんだ 発見するのに15年もかかってしまった
ステートロックできるボタンだ罠
320 :
デフォルトの名無しさん :2012/09/22(土) 20:38:00.11
>>319 それ2004年になってるけど
Windows7や8では使えるのだろうかね
前スレで使えないといった書き込みがあったと思ったよ
非標準のコントロール使わなければ、その配布は不要で
exeをコピーするだけで他のマシンで使えるしサポートも表明されてるし
win7に直接VB6のIDEをインストールした俺が来ましたよ。 たぶんいくつかの重要なシステムファイルはVB6の古いのに置き換えられたでしょうよ
322 :
デフォルトの名無しさん :2012/09/22(土) 23:44:56.23
やっぱ俺らって間違いが嫌いじゃん ま、こんなもんだろって、済ますようなことはしないじゃん 何時間も何日もかけて間違いを直すじゃん それは放置したらその何倍も苦労するのを知ってるからじゃん でも在日朝鮮人てその行動も主張も存在も、 全てが例外処理されるべきなのに放置されてるじゃん それが俺ら厳格な理論を積み重ねる人間には許せないんだよな だからこの板には在日朝鮮人嫌いが多いんだよじゃん
痛いぐらいに重症なネトウヨ脳だなおい
>>321 Vista/7はSxSがあるので気にする必要なし
vb6 で遊んでる。今日のwindows update でvb6 webbrowser がレジストリエラー vb6 webbrowser は問題があるのかwindows update のときに頻発する現象。 いきなり10日間ぐらいyoutubeの動画再生スライダが ieでは表示されるのに vb6では 表示されない現象が続いていたがyoutube側で訂正がされたのか2〜3日前から正常に 表示されるようになっていた。今度のwindows updateがそれと関連あるのかわからないが 再起動後は一応正常なまま。以上チラシの裏
326 :
デフォルトの名無しさん :2012/09/23(日) 19:20:15.16
数日前にYoutube側の仕様変更で各ダウンロードツールがDLできないという現象が発生 すぐさま対応した作者もいれば、Youtubeに警告されて対応しないことを決めた作者もいるもよう 自作でシコシコDLツール作ってた俺の勝利
>>326 すぐさま対応した作者のツールを使ってますが何か?
質問です。 あるフォルダの内部構造を調べて、 そのフォルダ配下のすべてのファイル情報を取得する方法として、 代表的なものに再帰処理があると思うのですが、 負荷的な問題があり、なるべく再帰処理はしたくありません。 再帰処理をしないでフォルダの内部構造を調べる方法はないでしょうか? それとも再帰するしかないのでしょうか? ご存知の方がいらっしゃれば教えてください。 よろしくお願いします。
>>328 できた!
Private Sub Command1_Click()
Command1.Enabled = False
Dim FSO As New Scripting.FileSystemObject
Dim A$, B$, C$, TempDir$, Flag%
TempDir$ = FSO.BuildPath(Environ("USERPROFILE"), "TEMPDIR")
A$ = FSO.BuildPath(TempDir$, "HOGEHOGE.BAT")
B$ = FSO.BuildPath(TempDir$, "HOGEHOGE.TXT")
C$ = FSO.BuildPath(TempDir$, "HOGEHOGE.END")
If Not FSO.FolderExists(TempDir$) Then Call FSO.CreateFolder(TempDir$): Flag% = 1
With FSO.CreateTextFile(A$)
Call .WriteLine("CD """ & Dir1.Path & """")
Call .WriteLine("CMD.EXE /C FOR /R %%I IN (*.*) DO @ECHO %%~dpfI>>""" & B$ & """")
Call .WriteLine("ECHO END>""" & C$ & """")
Call .Close
End With
Call Shell("CMD.EXE /C """ & A$ & """")
Do While Not (FSO.FileExists(C$))
DoEvents
Loop
With FSO.OpenTextFile(B$)
Text1.Text = .ReadAll()
Call .Close
End With
Call FSO.DeleteFile(A$)
Call FSO.DeleteFile(B$)
Call FSO.DeleteFile(C$)
If Flag% = 1 Then Call FSO.DeleteFolder(TempDir$)
Set FSO = Nothing
Command1.Enabled = True
End Sub
再帰使っちゃダメなんだぞう!
Environ("USERPROFILE") TEMP使いなさい
どのみち非常に悪い例である
問題点 一時ファイルを生成するなら環境変数TEMPのパスを使うべき 一時ファイルを生成する権限が無い場合にエラーが出る 1文字変数名のA,B,Cは分かりにくいので良くない 生成する各ファイルと同名のファイルがあった場合に上書きされる ファイルが1つも無かった場合にHOGEHOGE.TXTのリードエラーになる フォルダ名が記載されない ファイル一覧がテキストなので一つ一つのファイル名を取り出す処理に時間がかかる 処理はバッチファイルなど外部処理を使わずVB内で完結すべき 採点 5点(100点満点中)
Private Sub Command1_Click() Let Command1.Enabled = False Dim FSO As New Scripting.FileSystemObject Dim BatFile$, TxtFile$, EndFile$, TempDir$, Flag% Do Let TempDir$ = FSO.BuildPath(Environ("TEMP"), FSO.GetBaseName(FSO.GetTempName())) Loop While FSO.FolderExists(TempDir$) Call FSO.CreateFolder(TempDir$) Let BatFile$ = FSO.BuildPath(TempDir$, "HOGEHOGE.BAT") Let TxtFile$ = FSO.BuildPath(TempDir$, "HOGEHOGE.TXT") Let EndFile$ = FSO.BuildPath(TempDir$, "HOGEHOGE.END") With FSO.CreateTextFile(BatFile$) Call .WriteLine("CD """ & Dir1.Path & """") Call .WriteLine("CMD.EXE /C FOR /R %%I IN (*.*) DO @ECHO %%~dpfI>>""" & TxtFile$ & """") Call .WriteLine("ECHO END>""" & EndFile$ & """") Call .Close End With Call Shell("CMD.EXE /C """ & BatFile$ & """") Do While Not (FSO.FileExists(EndFile$)) DoEvents Loop With FSO.OpenTextFile(TxtFile$) If .AtEndOfStream Then Let Text1.Text = "No Files" Else Let Text1.Text = .ReadAll() Call .Close End With Call FSO.DeleteFile(BatFile$) Call FSO.DeleteFile(TxtFile$) Call FSO.DeleteFile(EndFile$) Call FSO.DeleteFolder(TempDir$) Set FSO = Nothing Let Command1.Enabled = True End Sub
Private Sub Command1_Click() Let Command1.Enabled = False: Let List1.Visible = False: Call List1.Clear Dim FSO As New Scripting.FileSystemObject Dim BatFile$, TxtFile$, EndFile$, TempDir$, Flag% Do Let TempDir$ = FSO.BuildPath(Environ("TEMP"), FSO.GetBaseName(FSO.GetTempName())) Loop While FSO.FolderExists(TempDir$) Call FSO.CreateFolder(TempDir$) Let BatFile$ = FSO.BuildPath(TempDir$, "HOGEHOGE.BAT") Let TxtFile$ = FSO.BuildPath(TempDir$, "HOGEHOGE.TXT") Let EndFile$ = FSO.BuildPath(TempDir$, "HOGEHOGE.END") With FSO.CreateTextFile(BatFile$) Call .WriteLine("CD """ & Dir1.Path & """") Call .WriteLine("CMD.EXE /C FOR /R %%I IN (*.*) DO @ECHO %%~dpfI>>""" & TxtFile$ & """") Call .WriteLine("ECHO END>""" & EndFile$ & """") Call .Close End With Call Shell("CMD.EXE /C """ & BatFile$ & """") Do While Not (FSO.FileExists(EndFile$)) DoEvents Loop With FSO.OpenTextFile(TxtFile$) If .AtEndOfStream Then Call List1.AddItem("No File") Do While Not .AtEndOfStream Call List1.AddItem(.ReadLine()) Loop Call .Close End With Call FSO.DeleteFile(BatFile$): Call FSO.DeleteFile(TxtFile$): Call FSO.DeleteFile(EndFile$) Call FSO.DeleteFolder(TempDir$) Set FSO = Nothing: Let List1.Visible = True: Let Command1.Enabled = True End Sub
On Errorのエラー処理を入れなさい
>Do While Not (FSO.FileExists(EndFile$)) 括弧が多い
Let 省略可能です。キーワード Let を明示的に使用するかどうかは表記上の問題であり、通常は省略します。 MSDNより
もしかしてWin32APIのmemcpy使わなくてもユーザ定義型変数とLSet使えばメモリのコピーできるのか?
そう、このように利用することができる Private Type typeA Val1 As Long End Type Private Type typeB Val1 As Byte Val2 As Byte Val3 As Byte Val4 As Byte End Type Private Sub Command1_Click() Dim a As typeA Dim b As typeB Let a.Val1 = &HAABBCCDD LSet b = a Debug.Print Hex(b.Val1) Debug.Print Hex(b.Val2) Debug.Print Hex(b.Val3) Debug.Print Hex(b.Val4) End Sub
これは使える!
こんな使い方も可能だ Private Type typeA Val1(3) As Byte End Type Private Type typeB Val1 As Byte Val2 As Byte Val3 As Byte Val4 As Byte End Type Private Sub Command1_Click() Dim a As typeA Dim b As typeB Let a.Val1(0) = &H10 Let a.Val1(1) = &H20 Let a.Val1(2) = &H30 Let a.Val1(3) = &H40 LSet b = a Debug.Print Hex(b.Val1) Debug.Print Hex(b.Val2) Debug.Print Hex(b.Val3) Debug.Print Hex(b.Val4) End Sub
これは便利すぎる!!
345 :
デフォルトの名無しさん :2012/09/24(月) 09:31:42.27
LSetでの構造体コピーで型変換もできるぞ 例えば画像ファイルや動画ファイルの中を除くと 中の数値がインテル形式でなくモトローラ方式のバイト並びになってたりする Uintなら逆に読んで256掛けていけばいいが ShortやDoubleだと途方に暮れる そこでバイト配列と目的の型をType宣言しといてLsetすると型変換できてしまう
346 :
デフォルトの名無しさん :2012/09/24(月) 11:50:49.33
>>328 再帰にすると発生する負荷的なものとはいったい何でしょう?
途中でキャンセルする方法が判らないとか、
もしかして空き時間にタイマーイベントで少しずつ処理したいとかかな
まずフォルダを列挙する方法
文字列配列に列挙する
初期値はlist$(0)="C:\"
コードは、その配列を全部調べて右端が'\'だったらサブフォルダを追加して'\'を削除する
よって、このコードを1回実行すると
list$(0)=C:
list$(1)=C:\Program fille\
list$(2)=C:\Windows\
になる。右端の\が全部無くなったら終了
再帰ならではの負荷なんてないよなー
348 :
デフォルトの名無しさん :2012/09/24(月) 12:34:48.45
Lsetなんか使ったら.netに移行する際に死ぬほど苦労するよ? VB.netにさえLSetは存在しないし。 VB6とお永遠に御付き合いするならええが。
>>346 ”C:\Program fille”なんてフォルダ、はじめて聞いた。
再帰じゃないロジックで書くのと比べれば、再帰にすればメソッド呼び出しのオーバーヘッドと スタック操作のオーバーヘッドがあるから、それを負荷と呼んでるのかもしれん。
いや、たぶんAPIみたいなものでWindowsが一括でデータくれるような ものはないか?ってことじゃないか?
おそらくフォルダ階層がすごい深いんでしょう?1000とか2000とか
その負荷のかかるという再帰コードにミスがあってメモリを食うだけだろ コードを見直すべきだな
RAM32MB
>>328 再帰なしでできたよ!
Private Sub Command2_Click()
Let Command2.Enabled = False: Let List1.Visible = False: Call List1.Clear
Dim FSO As New Scripting.FileSystemObject
Dim DCT As New Scripting.Dictionary
Dim FLD As Scripting.Folder
Dim SBF As Scripting.Folder
Dim FL As Scripting.File
Call DCT.Add(DCT.Count, Dir1.Path)
Do
Set FLD = FSO.GetFolder(DCT.Item(DCT.Count - 1))
Call DCT.Remove(DCT.Count - 1)
For Each FL In FLD.Files
Call List1.AddItem(FL.Path)
Next FL
Set FL = Nothing
For Each SBF In FLD.SubFolders
Call DCT.Add(DCT.Count, SBF.Path)
Next SBF
Set SBF = Nothing
Set FLD = Nothing
Loop While DCT.Count > 0
Call DCT.RemoveAll: Set DCT = Nothing
Set FSO = Nothing: Let List1.Visible = True: Let Command2.Enabled = True
End Sub
そう、よかったね・・
目的は再帰なしじゃなかろうて
負荷の少ない処理を所望だよね そんな方法があるなら俺も知りたい
>>336 >Call .WriteLine("CD """ & Dir1.Path & """")
>Call .WriteLine("CMD.EXE /C FOR /R %%I IN (*.*) DO @ECHO %%~dpfI>>""" & TxtFile$ & """")
何故FORを使った?DIR /B /S使えばいいのに
そもそもそこにCMD.EXEがいらない
Call .WriteLine("CD """ & Dir1.Path & """") Call .WriteLine("CMD.EXE /C FOR /R %%I IN (*.*) DO @ECHO %%~dpfI>>""" & TxtFile$ & """") ↓ Call .WriteLine("@DIR """ & Dir1.Path & """ /A-D /B /S>>""" & TxtFile$ & """")
なんか変なのがいるな
俺のことかな?
367 :
デフォルトの名無しさん :2012/09/24(月) 18:15:31.51
DOSコマンドを知ってるヤシって・・
ステキ?
ああ
コード書いてる奴って質問文よく読んでない フォルダ構造を負荷のかからない方法で知りたいって質問なのに負荷の大きいファイル列挙コードを書いてんじゃん
再帰だから負荷が高いっていう間違った前提の質問で、質問内容は >再帰処理をしないでフォルダの内部構造を調べる方法はないでしょうか? だから、負荷は無視して回答するしかないわけですが
ファイルひとつひとつに負荷の高い処理をしたいから再帰処理はしたくないって話じゃなくて?
対象フォルダをネットワーク上において、各回答手段を実行して パケットモニタリングすれば良い。
374 :
デフォルトの名無しさん :2012/09/25(火) 05:01:50.44
ソウル日本人教会の吉田耕三牧師(70) ・韓国大統領が独島を訪問したことや 天皇に謝罪を要求したのは 極めて当然のことだとする趣旨の書簡を野田佳彦首相に送付した。 ・昨年12月にも、在韓日本大使館前の「慰安婦少女像」の撤去要請に対し 抗議の手紙を日本政府に送った。 ・新潟県立新潟中央高等学校(男子5人、女子338人)に韓国修学旅行 プログラムをコーディネート、大人の付き添いもなく一般家庭にお邪魔するというものらしい
375 :
デフォルトの名無しさん :2012/09/25(火) 09:18:13.71
>>355 VB使いならFileSystemObjectを使わないで実装しろよ。
VB6の非標準オブジェクトを使用するのは俺らにとってはルール違反。
何でもアリならFileMakerや4Dでもいいって事になる。
>>375 俺らって誰よ?
FSOは、ほぼ標準だろ。
FSOはVB6の言語仕様じゃないだろ? 使う使わないは自由だが便利なので初心者は皆使う。 腕に自信のあるスキルの高いVB6プログラマは APIと応用で軽くこなす。
FSOを使うと頒布の時余計なもん入れなきゃならないから嫌だ。 最新のWindowsなら問題ないが、Win98やWin2000とかにはFSOは入ってないからな。
379 :
デフォルトの名無しさん :2012/09/25(火) 11:33:23.94
VB6で何の抵抗もなくFSOを使ってしまう奴の神経が知れん。 自力のコーディング力に乏しく、困るとすぐにOCXとか探して いくら高くても会社の金だからって買ってしまうんだろうな。 雇った会社に同情汁。
じゃ、DictionaryもRegexpも使うなアホ
使ってないだろ?普通は。
>>377-379 こういう奴らが車輪の再発明しまくって、閏年バグとかを作っちゃったりするんだろうなぁ。
I/Fぐちゃぐちゃな俺俺ファイルシステムライブラリでも作って悦にいってろ
MS謹製ライブラリとその他雑魚ライブラリを同一に語られましても。
FSOを使えば1分で実装できるのに、VBネイティブコードで1時間かけて実装する馬鹿
むしろFSOは積極的に使うべきだろ
>>378 今時、Windows 98とか2000がターゲットに入ってる時点で、自分の職場が超特殊であることに気付よ
>>385 一時間かかるという発想が自らのスキルの低さを露呈している訳だが…。プププ
391 :
デフォルトの名無しさん :2012/09/25(火) 13:46:06.95
>>387 98は知らんが2000サポートはかなり広範囲の顧客から条件設定される場合が多いよ。
あまり客層の厚くない会社は無縁だろうが。
sage, sage, ageと三つ続けてレスするの辞めて
>>389 vb6 "scriptingクラス"
7 件 (0.16 秒)
ウフフフフ
FSO使わないって奴は、PerlやRubyやPython使うときも組み込みライブラリしか使わないんだろうなぁ
先生!ネットワーク関連も、生Winsock APIしか使っちゃいけませんか?
そういや、ちょっと前にWinsockコントロール使うなっていってた奴いたけど、このスレだっけか。 そいつと同一人物か?
MSでさえサポートしないOSを使えって、マゾか
上の人達って、IE6のサポート打ち切るなんてもっての他なんでしょうね
APIというのは余計なインストールなくても使えるのか
sodayo
おまえら
>>363 を見ろ
MSが薦めるやり方はWindowsAPIを使うかVB標準のメソッド等を使うかだ
FSOでのやり方も載ってるが推奨はしてないだろ!
>>402 Microsoft曰く、
http://support.microsoft.com/kb/185601/en-us > The FileSystemObject class provides better performance than if you use Visual Basic
> intrinsic functions such as Dir and GetAttr. Additionally, FileSystemObject is much simpler
> to implement that the Visual Basic intrinsic functions.
ってことなんだけど?
FSOやWinsockコントロールは個人や学校の部活動とか趣味レベルのことしようとする奴向けのライブラリ 本格的なアプリケーション開発するのならFSOやWinsockコントロールを使うべきではない ここでの問題点は 質問者が趣味レベルのことやってんのか、仕事レベルのことやってんのか。 前者ならFSO使うのもいいだろう 後者ならFSO使うのは避けるべきだろう
>>403 >The FileSystemObject class provides better performance than if you use Visual Basic
> intrinsic functions
ここで言うperformanceとはコーディングが楽になるという意味でのパフォーマンスの良さって意味ですね
アプリケーションのパフォーマンスが良いという意味ではありません
おまえら面白いな 質問者からのレスポンスが全くないのにおまえらだけで勝手に空回りして
>>404 本格的なアプリケーション開発するならVC++かC#でしょ。
VBごときでなにいきってんの?
>>405 そういう意味だとすると、なんでAdditionallyとか付けたのかな?
質問が来るとすぐ暴走するのが旧VBスレ
>>404 はVB6以外ではどんな言語使ってるの?
で、それらを使うとき、ビルトインライブラリ以外は一切使わないの?
そうじゃない場合、例えば具体的にはどんなライブラリ使うの?
ライブラリのライセンスとか気にしてないで使いまくって開発してる企業とか多そう
誰かがわざと燃料投下してるとしか思えない
まぁ、俺はFSOを存分に使って、さっさと別のことやるけどね。 それがプロw
プロ(笑)
10万20万のOCX買うの渋って、1,2人月かけちゃうようなアホ上司みたいだ。
MSはVBの検定試験とかプロ資格試験とか作ればよかったのにね
OCX買って開発したはいいものの出来上がったものを製品として販売はOCXのライセンス違反なのであった
さあどんどん燃料投下していってね!
419 :
デフォルトの名無しさん :2012/09/25(火) 17:04:17.44
旧VBスレが大炎上
C++でboost使って良いかどうかとか、超絶メタプログラミングテクニックは是か非かみたいな話と似てるな。
>>417 OCX買ったこと無い人にはわからない話題だったね。
プログラマがライセンス条項を読んでるわけないじゃん
製品として配布できないOCXを売るw
OCXそのものを配布したらライセンス違反だろ
え?
拡張子ocxのファイルそのものを再配布はダメなとこが多かったハズだが
は?
元の質問とはかけ離れた話にシフトアップしていきます
真昼間から暇人が多いVB使い
おいおい
元の質問って何だったっけ?
俺も分からない
しかたない 次の質問が来るのを待つとするか
真性かまってちゃん
昔、Chart OCX買って貰えずに、泣きながら実装したことあるの思い出したわw
この流れで、大体のレベルが知れた。 俺のVBレベルは、このスレ全体を100としたとき、上位15番以内に入れる気がするわ。
このスレに15人もいるのか・・・?
俺もそうだが、このスレを読んでるような奴はもう終わってるよ
このスレ見てるの10人もいないと思う
441 :
デフォルトの名無しさん :2012/09/26(水) 07:59:27.93
ドットNETに移行しない奴が多いので旧VB路線復活というMSのリーク話はどうなった
FSOとかDictionary否定したら、 巨大なランタイムが必用な.net全否定だな。 まあ、このスレにいる人なら、あり得なくはないが。
>>441 間もなく正式アナウンスがあるようだけど、.netの最新機能が使えるのが嬉しいな。
444 :
デフォルトの名無しさん :2012/09/26(水) 10:56:31.63
>>443 Lsetが使えなくなるっぽい。便利だったのに。なんで?
445 :
デフォルトの名無しさん :2012/09/26(水) 11:00:58.39
Win8でVB8か?まじかよ
>>444 Twipsの単位系が全滅。
ScaleModeでリサイズ可能に実装したグラフも全滅orz
アンマネージなVB.netとどんだけ違うのか?
たぶん.etへの移行促進を目的にしているんだろうな。
おまえらがVB.NETを使えないからだろ!
ランタイムが数個・数MBで、ネイティブコードで GCなしにしてくれれば、即移行するけどなぁ。
VB.NETで作ると、微妙なモッサリ感がぬぐえないんだよなぁ。
マシンスペックさえ上がればモッサリ感など!
C#なら少し速くなるかと思ったら同じなのに唖然!
コンパイラはVisual Studio 2012のC++のアンマネージド用と同じになるようだが それって性能的にはどうなんだろ?
>>407 >本格的なアプリケーション開発するならVC++かC#でしょ。
つまり業務用のアプリをVBで開発してるとこは頭おかしいってこと?
454 :
デフォルトの名無しさん :2012/09/26(水) 16:25:14.78
燃料投下!
>>450 どこまで上げればいいんだよって話だよね。
少なくとも俺が使ってるCore2Duo 2.26GHzでもっさりだった時点で、俺は何かをあきらめたよ。
456 :
デフォルトの名無しさん :2012/09/26(水) 16:25:52.77
Functionで戻り値は、プロシージャ名=戻り値ってやるじゃん ある条件の時には−1を返して早々に抜けるんだけど プロシージャ名 −1: Exit Function って書いてあって、これが無限再帰になって死ぬのになかなか気付かなくて この記法はやめてほしいわ Returnで返した方が編集しやすいし視認性もいいし
言語は関係ないでしょ? バグだらけで不安定なC++で作られたアプリと ちょっとモッサリ感はあるけど10年間トラブルが1度もなく 超安定しているVBアプリと、業務で使うとしたらどちらか 効くまでもなかろう。
>>455 Javaを知らない人は厳しい評価を下すねぇ・・・。
VB6が作られたのはもうずいぶん前だ。 今の技術とセンスで作れば見違えるようなものが出来るはずだ
>>456 プロシージャ名=戻り値のような戻り値を設定するだけのプロシージャ名でない固有名の処理ステートメントを作ればよいのだ
さらにはreturn と併用できるようにすれば処理の幅が広がる!
>>458 Javaでプログラミングしてた時期もあるし、Javaで動くIDE使ってるからJavaの絶望感は知ってるよ。
だけど、やっぱりVB6やVC+MFCのアプリと比べるとねぇ・・・。
えくりぷすか
古いVBのスレなのに活気があるよねここ
9割は俺の自演だから
465 :
デフォルトの名無しさん :2012/09/26(水) 17:22:11.08
>>463 古いけど最新のVB.netでは逆立ちしても追いつけない実効効率の高さがある。
467 :
デフォルトの名無しさん :2012/09/27(木) 11:49:16.26
高飛車な態度をとる奴を叩きまくってスレを盛り上げる それでエクセルVBAスレを抜くことができた
468 :
デフォルトの名無しさん :2012/09/28(金) 08:51:22.92
Windows 8の一般リリースとと同時発表か
何が?
ネトウヨ王がなんたらかんたら
新VB6の全容が明らかになったね。無料?
どこで?
初心者です。すみませんが回答可能な方いらしたら御教示の程お願いします。 VB6の文字コードの取り扱いのことで悩んでます。 InetコントロールでWebサイトのソースを読み取りテキストとして取り出したいのですが、 当初、UTF-8で読んでいたため文字化けしてしまっていました。 VB6の場合、文字列はUNICODE(UTF-16)として扱うなどを知り、UNICODE(UTF-16)に 変換できるようにして、ファイルをMIFESで開いても自動判定でUNICODE(UTF-16)になり 文字化けせず、NptePadでも文字化けせず開けるようになったのですが、VB6でテキスト 表示させると文字化けしてしまいます。 ちなみに、ShiftJISに変換してみてもダメでした。 文字化けするのは日本語(全角)の箇所のみです。 原因がわかる方、どなたか御教示いただけませんでしょうか・・・
475 :
デフォルトの名無しさん :2012/09/29(土) 22:33:33.38
>>474 名探偵 Forms 2.0 に依頼してみては?
477 :
474 :2012/09/30(日) 07:19:57.68
478 :
デフォルトの名無しさん :2012/09/30(日) 11:39:01.08
479 :
デフォルトの名無しさん :2012/09/30(日) 12:34:34.97
>>474 本当にUTF-8からUnicodeに変換したの?
変換できてないよ
変換する方法はこのスレの前の方で喧々諤々やってるから見てみ
480 :
デフォルトの名無しさん :2012/09/30(日) 12:40:20.08
VB6/XPだけどTreeViewがおかしくなってる フォルダのツリーを作ってあったんだけど 実行ファイルでエラーが出たからソース開いたら文字化けしてるし フォルダが開けないし Windows Updateで壊された?
HDDが壊れただけだろ
482 :
デフォルトの名無しさん :2012/09/30(日) 17:30:24.66
やっぱ俺らって間違いが嫌いじゃん ま、こんなもんだろって、済ますようなことはしないじゃん 何時間も何日もかけて間違いを直すじゃん それは放置したらその何倍も苦労するのを知ってるからじゃん でも朝鮮人てその行動も主張も存在も、 全てが例外処理されるべきなのに放置されてるじゃん それが俺ら厳格な理論を積み重ねる人間には許せないんだよな だからこの板には在日朝鮮人嫌いが多いんだよじゃん
ネトウヨ王に、俺はなる!まで読んだ。
何で右翼なんだよw
>>482 朝鮮より中国だろ
オフショア開発が多いからそう思う人も多いはず。
奴ら適当にやり過ぎだわ。
485 :
デフォルトの名無しさん :2012/09/30(日) 18:33:16.85
>>480 > VB6/XPだけどTreeViewがおかしくなってる
> フォルダのツリーを作ってあったんだけど
> 実行ファイルでエラーが出たからソース開いたら文字化けしてるし
> フォルダが開けないし
> Windows Updateで壊された?
MSCOMCTL.ocx がおかしくなった、8月のWindowsUpdateだったかな?
あきらめてリカバリーしてWindowsUpdateせずに放っておいたら知らないうちに直ってた
486 :
デフォルトの名無しさん :2012/09/30(日) 18:36:06.44
489 :
デフォルトの名無しさん :2012/10/01(月) 10:10:01.15
>>485-486 やっぱりだね
VBの現役時代に雑誌で、参照設定から追加するようなコントロールは
製品のサブセット版で、サンプルみたいな意味合いが強く
ちゃんと動くものが欲しかったらベンダーの製品を買え、みたいな記事があって
それ読んでから小物ツールにしか使わないようにしてたけど正解ぽいね
いつ動かなくなるかわからないよ
MS謹製のOCXにも、品質の濃淡があるんだよ。 MSCOMCTLは、昔からできが悪いものとして有名。 まあ、ベンダー製品にも当然バグはあって、マメにリビジョンアップされてくものや、 放置されるものなどさまざま。 一概に、金を払ったから安心ってことでもないでしょ。
文化オリエントの頃は良かったがGrapeCtyと横文字になってから .netにしか注力しなくなったサードベンダーもいるしな。 不謹慎で申し訳ないが、震災の時は天罰が下ったかと思ったよ。
492 :
デフォルトの名無しさん :2012/10/01(月) 12:06:16.20
>>491 コントロールにまでアクティベーションをかけた企業だしな
マシン変えたんで再認証しようと思ったら震災で鯖が動かんと来た
そのために納期に間に合わずキャンセル食らって7千万円の損害
社内では悪いのは俺ってことになってる
VB6の時点でだめだろ
>>492 そりゃそうだろw
別にインターネットを使用しない
認証方法もあるわけだし、
震災のせいにしてはいけない。
496 :
デフォルトの名無しさん :2012/10/01(月) 13:25:17.66
>>494 それがインターネットをしない認証もできなかったんだよ
震災のせいではないよ
震災に対応できないくせに
アクチなんて導入した奴のせいだよ
マイクロソフトなら日本が潰れても海外でアクチできる
やはりそのくらいのキャパが無ければ
やってはいけない事だとおもった
>>493 最近、徐々にn.et場馴れが進んでいるというがね。
知り合いのSIも主要言語をC++に変更したというし。
.netって先がないんじゃない?
498 :
デフォルトの名無しさん :2012/10/01(月) 13:29:13.15
ActiveXを排除せずに残しておいたのが敗因。 .netしか使えなくすれば良かったのに。 欲張ったのが大失敗なのさ。 Macをみてみろ。過去をすべて捨てたからこそ圧倒的に支持されている。 今だけだが。
>>378 質問なんだが...
Windows2000や、Windows98でFSOが使えないって本当?
Windows95なら使えない場合もあると思うけど...Windows98以降では問題なく使えたと思うんだけど
wshom.ocxかscrrun.dllのどちらかを参照設定に加えればFSOが使えるようになったはず
Windows98SEでのSide-By-Side: DOBON.NETプログラミング掲示板過去ログ
http://dobon.net/vb/bbs/log3-15/8773.html WindowsXP、VB6にてFileSystemObjectを使用したアプリケーションを
開発しています。
FileSystemObjectはscrrun.dllのバージョンが5.4以上でないと使えないと
認識しているのですが、FileSystemObjectに対応していないバージョンの
scrrun.dllが入っているPCでも動作させたいと思っています。
そこで、ネット上で調べた結果、Side-By-Sideの機能を使えばいいのかなと思い、
下記のように行いました
@実行環境はWindows98SE。Windowsのシステムフォルダ内にある
scrrun.dllのバージョンはver.5.0。
AアプリケーションフォルダにFileSystemObjectに対応している
scrrun.dllをコピー。このscrrun.dllのバージョンはver.5.6。
Bアプリケーションフォルダ内に実行ファイルと同名のlocalファイル
を作成。
※実行ファイル名が「abc.exe」であれば
Inno Setup知識データベース
http://nardog.takoweb.com/misc/mystral_kk/iskb15.htm scrrun.dllと他のWindowsスクリプト実行時ファイルをどうやって配布したらよいのですか?
次に示すのは,Windowsスクリプト実行時ファイルのWindows 98/Me/NT 4.0版を配布する方法です。マイクロソフト社のWebサイトによれば,Windows NT 4.0では,インターネットエクスプローラ 3.02以降のバージョンをインストールしておく必要があります。
FSO使わないって Win95〜WinXPまで全部そろってるパソコン全部に入れたいとかいう依頼でも来たわけなの?
505 :
デフォルトの名無しさん :2012/10/01(月) 21:51:32.11
そもそもFSOを使う必要はなかったりするんじゃ
フォルダ構造知るだけならFSOは必要ないねDirメソッド使えばおk
507 :
デフォルトの名無しさん :2012/10/01(月) 22:28:38.10
ファイルにアクセスするならFSOって思い込んでる人かも
つーか、FSOを使う場合、CreateObjectで拾えば参照設定はいらないような気がするのだが...
>>508 レイトバインディングのペナルティは検討外ですか?そうですか。
そんなペナルティーなんかゼロに等しいと思うが、普通はインテリセンスが使えないのは 不便だから参照設定はするね。 しかし、本当にここだけ10年時間が遅れてるスレみたいなスレだなw FSOなんてもう10年以上使ってないけど、一つだけ覚えているのは、 何らかの理由でFSOが使えなくなってる環境が結構あったりするということ。
wshom.ocxかscrrun.dllのどちらかを使っててそれが無いってパターンか
もう無理しないでFindFirstFileでやるのが 一番互換性高いだろ・・・
FSOのがコードが簡単でハイパフォーマンスなのに、なんで頑なに使おうとしないのか理解不能。
バカだからだろうな
FSOはVBS用のライブラリ
VB厨の皆さん、そろそろjsに移行して下さいね。^^;
簡単だがハイパフォーマンスとかどこの乞食だ?
MSの主張
520 :
デフォルトの名無しさん :2012/10/03(水) 01:38:48.89
FSOは遅いというイメージがあるんだが そのイメージがどこから来たのか思い起こすと たぶんVBマガジンに書いてあったんだと思う
>>363 でMSが示す
API使ったやり方
VBの標準メソッド使ったやり方
FSO使ったやり方
の3つでどれが負荷かかるかとか時間かかるかとか誰か測定したことあんのかな
古い言語だし誰かがやっててもおかしくないはずなんだが
522 :
デフォルトの名無しさん :2012/10/03(水) 02:06:52.68
おまえやれ
523 :
デフォルトの名無しさん :2012/10/03(水) 09:09:52.56
Dir$()はネスティングできないのが最大の欠点だな。 ネスティングするつもりがなくてもDirの活性期間中に Dirを使っているサブルーティンを呼美出してしまい 変な挙動で悩むことがあった。 クラスで設計するようになってからこの問題はほとんど起きなくなったが それでもコンストラクタ内の処理で同じ過ちをしてしまうことがままある。
524 :
デフォルトの名無しさん :2012/10/03(水) 11:02:22.28
あとUSBメモリが抜けなくなるというのも
それはない
526 :
デフォルトの名無しさん :2012/10/03(水) 17:16:34.63
Dirは使い終わった後の開放処理がないから
>>526 基本的に構造が良くない。
面倒でも、最初にファイルリストを何かのコンテナに入れるというところまでを一区切りにし、
そのコンテナ内のデータ分ループして、目的の処理をするという構造が望ましい。
このやり方は、FSOを使う場合でも同様だし、他言語でも同様。
また、一般に外部リソースを扱う場合も同様。
安価ミスか?
530 :
527 :2012/10/03(水) 18:18:03.99
IDの出ないスレで
532 :
527 :2012/10/03(水) 18:23:02.92
なぜIDの出ないスレで決めつける 同一人物である根拠も別人である根拠もないのに
534 :
527 :2012/10/03(水) 18:27:28.53
2ch初心者に絡まれちゃったよ・・・
かわいそうに・・
このスレ、レス乞食大杉
俺の・・・ことか・・・・
538 :
デフォルトの名無しさん :2012/10/03(水) 20:32:39.62
>>526 まーた予感で言うなよ。
言語仕様的に開放されてないように見えるだけ。
値がNullStringになった時点で内部的にはちゃんと開放されてるよ。
Dirは未だに使い方がよく分からん
つまり返すデータが必要なくなってもNullStringを返すまでDirを呼び続けなければならないってことでしょ?
541 :
デフォルトの名無しさん :2012/10/04(木) 13:35:23.24
うn
542 :
デフォルトの名無しさん :2012/10/04(木) 15:15:28.80
なに言ってるの? NullStringを返す時点で開放されるのはもとより 引数付きでDirを再度読んだ時点で解放されるのは言うまでもない。 今時V6を使う人間は、.netやC++で適切でない実装での選択肢として残しており かなりハイスキルな人達だけかと思っていたが、単に.netに乗れない能なしもいることが わかってしまった今日この頃である。
______ ,.-'" ̄ "''‐- 、 _,,. -─/ \ / / ヽ、 / / ,i ヽ, / ,l / / .| /l ヽ l l .| l | / | ,/ | , | | .!ヘ 、 | l | //i.l.|ム--レ/_ |l _|L--、 | l/ ./ | L V |l _,,.-.、 ` "_.、-、 | | / / ト./ 'l | "i、,j ,) (_,,j ) .l | レ/ |::| `| | " '" '" |. | / l /::::l. | |: (二) _ 、 "゛゛ |. | . / /レ'| /::::::::ヽ┤ |:: |. | / ./ /:::::::`::::::::::::::::::|. |::: l | 初心者が来るところじゃないっすよ!? | /| |:::::::i:::::::::::::::::::::::|. ll:::: -── ノl | V | |:::::::|:::::::::::::::::::::::::|. ||::il`'┐._ " _.-''゛ |. | .| |::::/|:::::::|:::::::::::::::::| |'|:ト|!┴-ニ'─--┬‐''" l.| ヽ |/ ヽ|:::l|;:::::::::::::::::|.| |l___  ̄─、ト 、__ i.| ヾ. |:/:::::::::;~‖___  ̄''‐-.__ ~`''-ニヽ ル-|:::::|/ __゛''‐- 、 '~‐ 、 .|、 |::;ノ'/ ~'''-、. `ヽ、 ~''‐-"ヾヽ、
まあ、Dirなんか使わんしどうでもいい
よく使うぜ?
546 :
デフォルトの名無しさん :2012/10/04(木) 15:43:38.25
Dirは余計なリソース使わんし、Win98でFSOと速度比較すると10000ファイルリストアップするのに6倍の差がある。
XPだとFSOの方が速いけどな
MSのページに載ってたコードで、Listに追加するのとDoEventsを取って実行。 数千ファイル以上のファイル名を取得したいときは、方法を考える必要があるね。 * Windows XP+SSD 23309 Files found in 3635 Directories Size of files found under C:\tool\ = 812,468,523 Bytes Use API code: 2109ms Use VB code: 2328ms Use FSO: 9703ms おまけ(上と処理内容がちょっと違うけど): $ uname -a CYGWIN_NT-5.1 hoge 1.7.9(0.237/5/3) 2011-03-29 10:10 i686 Cygwin $ cd /cygdrive/c/tool $ time find . -print > /dev/null real 0m1.295s user 0m0.343s sys 0m0.967s ひょっとしたら、Cで書いた方が速いか?
549 :
デフォルトの名無しさん :2012/10/04(木) 16:35:11.52
ほとんどListのプロパへ書き込むときの時間だね。 比較するにもほどがるwww
550 :
548 :2012/10/04(木) 16:41:05.28
>>549 俺のコメントへのレス?
Listに追加するコードは削除して実行したってば。
Win32 API最強ってことでFAだな
553 :
デフォルトの名無しさん :2012/10/04(木) 18:02:51.02
結局FSOが致命的に遅いのがよーーくわかった。
Dir関数とFindFirstがそんなに変わらんなら迷わずDirを使うわ。
555 :
548 :2012/10/04(木) 18:30:19.27
>>553 そうでもないよ。ケースバイケース。
単にファイル一覧を取得するだけなら、FSO使っても2531ms。
しかも、コードが超シンプル。
一発でコレクションになるのが良い。
Dim FSO As New FileSystemObject
Function FindFile(ByVal sFol As String)
Dim oFolder As Folder
Dim oFile As File
Dim oSubFolder As Folder
Set oFolder = FSO.GetFolder(sFol)
For Each oFile In oFolder.Files
'Debug.Print oFile.path
Next
For Each oSubFolder In oFolder.SubFolders
FindFile oSubFolder.path
Next
End Function
おまえらFSOの話好きね
2531ms 開くだけで十分遅いわ
558 :
デフォルトの名無しさん :2012/10/04(木) 20:02:18.89
再帰キチガイがまた来たねw
>>555 サブフォルダって既にフォルダオブジェクトに格納されてんのにパスを渡して新たに同じフォルダオブジェクト作るの?
>>559 サブディレクトリを再帰的に舐めてるんだよ。バカか?w
メソッド名ListFilesならわかるけどFindFileなら探すファイル名くらい指定しないとダメなんじゃないの?
562 :
デフォルトの名無しさん :2012/10/04(木) 20:44:14.85
>>561 センスねーな。複数形にしてFindFilesで十分だろ?
FindFileというメソッドに引数としてフォルダパスだけ渡すとかカオス設計 探すファイル名と探す場所の起点としてのフォルダパスを渡すならわかるが
>>561 ,563
英語のfindの意味を知らないのか
小卒か?いや今は小学校でも英語を習うっつうから幼稚園卒か
フォルダも探索してるのだかFindFolderAndFiles が正当だろうな。 ScanFoldersAndFilesならもっと良い。
”find”は”探す”って意味じゃありません。”見つけ出す”という意味です。中学生から人生やり直して反省してください。
ファイルパスしか出力してないぞ
568 :
デフォルトの名無しさん :2012/10/04(木) 20:49:45.79
>>564 俺ネイティブだけど、Findだと見る程度の意味しかないよ?
何かを見つけ出すならFnd out。
この動作ならFindFileで十分意味が伝わるけどなぁ?
>>567 「舐める」という意味がわからんのかこの坊やは?wwww
ネイティブの答え Fnd out
571 :
デフォルトの名無しさん :2012/10/04(木) 20:55:31.62
英語力が問われるスレ
VB6プログラマにはなぜか英語が堪能な人が多かった印象があったのに。 残念だ。
>>363 を見ればFindFileとFindFilesでは動作が違うということがわかーる
573 同感
ばざーるでござーる か?
577 :
デフォルトの名無しさん :2012/10/04(木) 21:13:13.55
そういえば昔、 「○○○がわかーる」 なんて学習ソフト売ってなかった? 「VB.netがわかーる」なんかもあった気がするが もし使える教材だったらこのスレが存在してるわけないし 結局学習しても全然わからない教材だったんだろうな。
Find Files Scan Files Search Files Seek Files Discover Files Locate Files Hunt Files
英語力が問われるスレ
VB6プログラマにはなぜか英語が堪能な人が多かった印象があったのに。 残念だ。
質問スレなんだから質問しろバカ
個人の趣味のプログラムならFSOを積極的に使っても良いですか?
言っちゃなんだけどVB厨らしい低レベルな議論だな。
やってることを日本語で表現すれば「ファイルを再帰的に列挙する」だろう。
だからメソッド名は
EnumerateFiles
EnumerateFilesRecursively
普通はこうじゃないのか。
どっからfindとかseekといった単語を連想するのか俺には理解不能としか言いようが無い。
>>580 繰言は脳が劣化してる証拠。
ボケ老人も知的障害者も繰言が大好き。
ネタのつもりかもしれんが、普通の正常な人はそれをネタとして面白いと思わないから
いずれにせよ脳機能かメンタルのどこかに故障がある可能性が高い。
マジレスしちゃうのはアスペの証拠
>>582 ダメ
FSOはWindows98で使えないことがあるから
>>582 FSOは動作が遅いからAPIのほうを使いなさい
587 :
デフォルトの名無しさん :2012/10/04(木) 21:54:25.43
列挙とかwww 今度はEnum野郎登場かよwww
問題点がそれくらいなようなので FSOを使うことにしました。
>>582 FSOなんて覚えたって意味ないよ
APIの使い方覚えたほうが他の言語でも使えるからプログラマならAPI
>>582 FSO以前にこんな古いVBを捨てるべき
VB.netを覚えるか他の言語を使え
FSOで列挙。 ENUM FSO FOLDER FILE FIND END ENUM
594 :
デフォルトの名無しさん :2012/10/04(木) 22:02:01.52
VB6はアンマネージコードを吐ける最後のBASICコンパイラ。 Wn98でも実用レベルの実装が可能。 .netには逆立ちしてもできん芸当。
Win98のくだりは関係なくね?
VB6とC++を自在にこなすオイラだが、.netだけは未経験。 そんなに遅いのかい?.netって?
>>582 PHPかRubyかPythonかPerlを覚えて使えばいいよ旧VBなんて使うな
>>589 こんなの覚える必要ありますか?
マニュアル見て使うだけだと思いますが?
>>582 業務で旧VBを使ってるとかならともかく
個人の趣味で旧VBを使うとかアホだぞ
さっさと新しい言語覚えて使え
たしかに個人の趣味でこんな古いVB使うとか頭おかしいな
603 :
デフォルトの名無しさん :2012/10/04(木) 22:39:12.21
趣味だからこそVB6が許される。 仕事で使っていたらプゲラだろ? ふつうは
そういえばもう何年もVB6の新規案件という話は聞かないな。 当然といえば当然か。
クライアントにPCを新しくするよう要求してろよ
業務でも趣味でも旧VBは使われなくなりました このスレを終わらせてください
君が見なけりゃいい事だよ
どんな言語よりも この旧VBで作ったほうが良いっていうアプリとかどんなのある? つまり他のどの言語よりも旧VBだけが持ってる優れた部分って何がある?
何もない
そんなものはない。一切ない。 どうでもいいけど、何で自分がそんなVB6を擁護するレスを期待するような見え透いたことを書くのか 少し考えた方がいいんじゃないの? VB6しか使えない使えない自分を擁護して欲しいんだろ? っていいうか、本当はわんくまのじゃんぬとか言う人が言うように、こういう人は VB6もまともに使えてない可能性が高い。
611 :
デフォルトの名無しさん :2012/10/05(金) 00:45:13.72
Office VBA
旧VBが優れた点が無いのなら個人の趣味で使うのはやめたほうがよい
なんで?
将来性がない 老い先短い老人ならいいが PCだって寿命のある家電 いつかは買い替えるだろ? 旧VBがいつまでも使えると思うな
615 :
デフォルトの名無しさん :2012/10/05(金) 09:01:26.11
VB6開発環境を、Win7の64bit環境で使う方法を教えてくれないか? VB6のインストーラを管理者権限でインストールして、SP6を当てるところまではやった。 ちゃんと起動するし、フォームにボタン載せるぐらいの簡単なプログラムならコンパイルもデバッグもできる。 でも、手持ちの大きなVB6アプリのソースをコンパイルしようとすると開発環境がフリーズしてしまうんだ。 タスクマネージャーで強制終了するしかなくなる。 そのアプリは、いろんな参照設定とか、Win32APIとか呼びまくってるソースなんだけど、 もちろんXP上でコンパイルしたら問題なくコンパイルできるよ。 同じ経験した人、何が原因か分かる人いますか?
今時VB6を法人での採用事例がまだ少ないWin7 64bitで使う? 居たとしてもみんなXPモード使ってるよ。 だから自分で調べるしかない。 VB6の管理者起動試した? 互換性の設定全部試してみた? そのアプリそもそも動くの? デバッグ実行は?
>VB6の管理者起動試した? >互換性の設定全部試してみた? 試した。 >そのアプリそもそも動くの? XPでコンパイルしたものをWin7 64bit環境にインストールすれば動く。 >デバッグ実行は? これもフリーズする。
>>614 >老い先短い老人ならいいが
うちのじいちゃん78才だけどVB6しか使えない。
でもじいちゃんが言うんだ。
「年老いて能力が若い時の10分の1になったら
10倍時間をかけて組めばいい。
頭の足りない若造が作る足りないソフトより
わしの作るソフトは大衆に気に入られておる。」
だってさ。
619 :
デフォルトの名無しさん :2012/10/05(金) 09:40:51.39
>>618 45でVB6使いの私には共鳴するところがある
620 :
デフォルトの名無しさん :2012/10/05(金) 09:49:39.24
45歳以上の.netに移行してないVB6プログラマ300人にアンケートを取った結果です。 Q13 あなたはなぜ.netへ移行しないのですか? A ・イベントの引数に訳のわからんものが増えているから。 ・コンパイル後にJIT適用しても遅い感じだから。 スカラー型変数だけを使えばVB6はCコンパイラと実行性能はそれほど変わらない。 ・i As Integerと宣言しただけでNewしてそうできもい。 ・プロファイラで簡単に逆コンパイルされるのでプロプライエタリを維持できない(オープンソースがデフォ) ・Javaと同じくAPIを使わないで自前のアルゴリズムだけで組むとN88 BASIC程度の性能しか出ない。 ・単に面倒くさい。
621 :
デフォルトの名無しさん :2012/10/05(金) 09:55:35.35
>>615 自分が担当してるプロジェクトでは使用しているコントロールが
Win7&VB6では使用できない(vbp立ち上げ中にエラー)のでいまだにXPで保守している。
空っぽのプロジェクトに参照設定をひとつずつ足していって原因になってるのをつきとめて
バージョンアップするなり代替策を用意するのがいいんでないかと思う。
x64に対応していないのはIDEだけなのだから x32で開発してx64で走らせればいいだけの事。 なんでそんな事も分からないのか? それになぜ消去法で原因をみつけようとしないのか? 聞けば誰かが答えてくれる。そう思って2chを使う気なら 君はボロボロにされてしまうよ。
623 :
デフォルトの名無しさん :2012/10/05(金) 10:08:20.10
x32
x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x3 32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 2 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x3 32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 2 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x3 32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 2 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x3 32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 2 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32 x32
625 :
デフォルトの名無しさん :2012/10/05(金) 10:42:33.42
>>618 以前はプログラマ35歳定年説とか言われたけど
昔の開発環境だったらその通りだと思う
でも今の開発環境だと例えば自分で作り貯めたライブラリとかを
組み合わせるだけで先っちょの部分はそこそこできてしまう
若者の10分の1のスピードなら10倍時間をかければいいという話も
実際はそんな単純な話ではないはず
囲碁や将棋のように作る前から先が見通せるからね
最近はちょっとしたコードなら一発で動作して自分でも驚くことが多い
>>621 確かに古い時代に購入したサードパーティー製のたちの悪いコントロールを使ってると、
Win7ではエラーが出るということはあるね。
おそらくDLLなんかの読み込み先をsystem32とかの決め打ちで書いてるバカなソースなんだろう。
しかしそれはXPでコンパイルしたexeを、Win7にインストールしても動かないというケースだ。
俺の場合はexeはWin7 x64では動くけど、ソースを開発環境でコンパイルができないというケース。
現状ではVMware上のXP環境でコンパイルするしているが、
Win7で直接コンパイルする手段があるならそうしたい。
1:古い業務用VB6ソフトを仕事で嫌々保守ー> ストレス溜まる。精神的不安が免疫力を低下させー>健康問題発生 2:趣味でこれから新しいプロジェクトを立ち上げるー>頭おかしい。 3:趣味の古いプロジェクだが、それなりのファンや愛用者がいて機能拡張を期待されてる。windows8でも使えそう−>プログラミング楽しい。 3:以外の方はご愁傷様といわざる得ない
VB6の良いところは、BASICって事だろ VB.NETだと、BASICと言うには、ちょっと高度な内容だと思う
高校数学の教科書やセンター試験の数学は未だにBASICなのかな
今時あんな古い行番号BASIC扱えるパソコンなんかないのに 大学入試センター試験は頭おかしい
631 :
デフォルトの名無しさん :2012/10/05(金) 15:20:24.30
仮想言語でプログラムできるってのは重要な素養だとおもうぞ もちろんそこまで考えてないだろうが。 まあ若くしてプログラムしてる学生へのおまけだと思えば。 VB.NETって.NET FrameworkでのC#に対する優位性が 一見VB6に見えるから移行しやすそうに見えるってだけなんだよなー だったらVB6の文法のまま進化すればよかったのに
VB6の文法で.NETの中間コード生成するコンパイラをおまんらが作ればいい
そんなスキルあるやつがVB6なんて使ってないってばよ
634 :
デフォルトの名無しさん :2012/10/05(金) 18:53:16.81
>>632 それが間もなくMSからリリースされる新VB6だろ?
.netだけでなくアンマネージドなコードも出せる点が異なるが。
まあVC++と同じ特性をもつって事だが、ランタイムが新しいOLEオートメーションらしく
そっちの方に興味がある。
>>634 OLEAUTOではなくなると聞いたけどね。
でもOLEだろ?
>>606 完全脱却か、羨ましいなあ
まだ保守案件残ってるよ
638 :
デフォルトの名無しさん :2012/10/05(金) 21:52:20.10
編集ウインドウを3分割可かプロシージャ毎に閉じれるようにして欲しい 複数行になる時の行末の _ の後ろにコメントを書きたい 5つくらいの変数に色付け指定ができるように MSの人見てないか
639 :
デフォルトの名無しさん :2012/10/05(金) 21:55:51.43
Skincrafterってソフトでフォームを飾ったら、VB6もあと10年はイケルと思った。
http://skincrafter.com/gallery アウトソースを受けてる某顧客にこれでスキン付けて納品したら、
最新の開発環境をお持ちのようで羨ましい限りですと誉められた。
中身がVB6とも知らずにねwww
642 :
デフォルトの名無しさん :2012/10/05(金) 22:59:55.42
>>638 >>複数行になる時の行末の _ の後ろにコメントを書きたい
同感だねぇー
他の2つはツール買って貰って解消
>>641 出来の悪いステマでしょ。
言語なんて普通発注元から指定されるし。
644 :
デフォルトの名無しさん :2012/10/06(土) 08:57:27.27
言語指定なしの受託って少ないけどあるよ。 まあかなり信頼されているベンダーでないとあり得ないだろうが。 ウチの場合はすべてお任せって案件も少なくない。 そのケースでVB6を使う事は有り得ないけどね。
>>643 そのメーカー海外だろ?
ステマって・・・。
しかもマイナーなVB6板で…。
ワロスwww
>>639 会社の改良試作予算が残っていたので思わず買ってしまった。。。
ちょっと高いがまあソースも付いてるし、会社の金だから腹いたまんし。
>>645 だから「出来の悪い」って書いてあるんだが…
バカはこれだから。
ステマじゃないだろ?日本語不自由な北朝鮮?
図星突かれて、顔真っ赤 (w
ファビョってるステマちゃんw
651 :
デフォルトの名無しさん :2012/10/08(月) 00:41:58.59
VB6に慣れちゃったからVB6でずっと作っていくつもりだよ(趣味グラマ)
趣味なのにVB6とか持ってるとか不思議。割れ?
意味わからん、Delphi とか VB6 とか普通に個人で買った奴はいくらでもいるだろうに。
マジで?あんな高いものよくかえるな? まあどうせ会社のをコピーしたんだろうけどw
同じ言語習得と、わけのわからぬ理屈付けをして… 英会話教室に数十万費やすやつは基地外なわけだ
て言うか、趣味としてはかなり安い部類だと思うぞ。 車とかオーオタだと桁が違うし (w まあ、人は自分のやってることは人もやってると思いたがるものだから、 > まあどうせ会社のをコピーしたんだろうけどw が、全てを表してるでしょ。
昔ね VC4 のラーニング・エディションを一万程度で購入した記憶があるのだが… それで十数年飯食えてるヤツもいれば、二・三週間しかもたないようなゲームを 一万数千円もだして数十本買うヤツもいるんだよね
658 :
デフォルトの名無しさん :2012/10/08(月) 09:53:06.92
VB6のスタンダードって6万くらいだったよな
仕事で使う事前勉強の為にVisualStudioに自腹で10万ほど費やしたが 今考えるともったいなかった
自分も昔、コピーを疑われたことがあったなぁ。 何故そう思うのか不思議だったか、その人、もしくはその人の周りがそうだったんだろうね。
趣味ならVB6じゃなくてDelphiとかVC++とか買う気がする フリーソフトとかランタイムライブラリが嫌われてたし
662 :
デフォルトの名無しさん :2012/10/08(月) 10:07:04.68
「内部統制」とかいってプロダクトIDの確認すればいいんだよ。 外注も含めて社内で作業する人全員分
>>661 > 趣味ならVB6じゃなくてDelphiとかVC++とか買う気がする
まだ言ってるのか…、自分の世界が全てと思うタイプなのかな
664 :
デフォルトの名無しさん :2012/10/08(月) 10:43:30.84
>>661 昔から趣味にしてる人は
8bitのBASIC→(QuickBASIC)→VB4ぐらいまでは流れる人がいても不思議じゃない
TK80BS を十万以上出して購入した俺の父親は酔狂だったかと思う。 でも、俺は父親が好きだ。
>>661 VB6製フリーソフトもたくさんあったし、趣味でVB6も十分あると思うよ。
まぁ、確かに自分が趣味で買ったのはDelphiで、VBは就職して使ったのが初めてだったけど。
667 :
デフォルトの名無しさん :2012/10/08(月) 13:18:51.37
668 :
デフォルトの名無しさん :2012/10/08(月) 14:34:57.26
学生の時にVB6のLEを買ったからアカデミックパッケージでお安かったよ。10年以上VB6でしか開発してない(趣味グラマ)
パ ピ オ ン バ ン
さすがに今となっては趣味でVB6使う気にはなれんなぁ VB2010のExpressとか使うよな?
ル パ ピ ン オ
>>671 昔ならパソコンはプログラムを作成して利用する物だったけど
現在、それを行ったら "自動車は改造して羽をはやして乗車するもの" を
あたかも常識として語り、キモイヤツと思われるのがおちでしょ
F1レースなら羽を生やしても空力等と言ってもらえるんですけど
>>671 VB.NET 使うなら、C# の方が楽じゃね?
>>674 一応このスレ的にはVBって事でw
機能的にはだいたい変わんないみたいだし
>>673 ごめん何言ってるか分かんない
ル パ ビ リ オ
677 :
デフォルトの名無しさん :2012/10/09(火) 09:12:54.79
最新のVisulStudio 2012までずっと割れで通してきた俺様が来ましたよ? 2010は体験版インスト後、インストールの変更時に製品の尻を入れればそのまま使えたが 2012はアクチを導入したりやっかいだったけど、それでも抜け道はあったね。 VB6はどうやって手に入れたか忘れたけど、昔はMSDNの正規会員だったこともあった。 CDがたくさん送られてきてバインダーが3個付いてきた時代。 それ以降は御付き合いが無いね。
おれおまー
>>673 プログラミングを学ぶということは、自動車の運転技術を学ぶ事と同じであり、自動車の改造をする事とは違う
喩えを使うと、議論が駄目になる良い例。
ル ン ポ ッ ポ
682 :
デフォルトの名無しさん :2012/10/09(火) 16:54:52.83
意味不明な喩えを使わないで
>>673 を簡単に言うと
今時、プログラムでアプリを自作する奴はキモい
フリーソフトを使いこなしてこそスマートである、と
キモくても何でもいいよ
必要なものは自分で作る
人の作った使い難いアプリを我慢して使い続ける必要はサラサラない
ラ ン パ ッ パ
ねっ、たとえ話をすると、プログラミング等でわけわからんこととやりだすやつ の根底にある問題点が簡単に露見するでしょ 同じネタを 679 と解釈するやつもいれば 682 と解釈するやつもいる 絶対的な手法も多く存在しているかと思うけど、 マニュアルにある、サンプル(たとえ話)を参考にてプログラミング技術を 習得できるやつとできないやつの差ですよ。
マ ゾ ニ ニ ル
今日日、VBに出来て、ブラウザに出来きないことって何だろ
VBのサンプルコードって何処で手にはいるんだ? もはや化石を通り越して石油になった技術
「VB6 -.NET」でググれば出てくるんじゃね
>>687 少なくとも、MSDN Library や DirectX SDK
直接適用できないかもしれないが VBA のサンプル・コード
現在でも入手確実なんて話ではないが
その時に自分が必要でなくとも、無料で配布してくれているときに
ダウンロードしておかなかった自分が悪い。
優れたフリーウエアでソース・コードまで添付してくれている神の
ような作者さんもいる。
そのような人のソースの多くはプログラム自体も美しいと表現で
きるだけでなく、コメントの書き方まで参考になるよ。
ゾ ミ ニ ー ク
正規表現の確認に便利なレスが。
ミ ゾ ル ク ノ
久々にExcelでVBAしてたら 懐かしいダイアログが出て笑った VBA、.netにならんのかなぁ
Excelが.NET Framework製になったらありうるんじゃね
うぇ…Excelがきちんと印刷できるようになるのと どっちが早いかなぁ…orz
そうなるとリバースエンジニアリングされやすそうだよな
697 :
デフォルトの名無しさん :2012/10/12(金) 15:33:00.61
ソース編集して集中してくると何故か勃起してきて ソース見ながらシコってしまう そんな域に俺は到達している
699 :
デフォルトの名無しさん :2012/10/12(金) 20:01:09.70
FormのBorderStyleを0(なし)にして、 ウインドウのタイトルバーも枠もなしにしたのだけど メニューエディタからポップアップ用のメニューを追加したら ウインドウのタイトルバーが表示されてしまいます BorderStyleの設定が無視されます これはVBのバグ?
そのポップアップ用のメニューの表示のチェックを外せ
そんでフォームのcaptionを空にしてcontrolboxやminbuttonやMaxbuttonもfalseにしろ
702 :
デフォルトの名無しさん :2012/10/12(金) 20:49:16.87
>>700-701 そんなのとっくにやってるよ
と思ったら、Captionをブランクにしたらできたー
なんだこれー
ありがと!!
素直な奴。このおちゃらけぶりの血液型はB型である確率98%だわw
血液型と性格の関係性は98%無いらしいぜ
>>704 釣りなのかもしれんが一応マジレスすると
別にフォームを作ってそのフォームにポップアップ用のメニューを作るのが一般的
VB6 form borderstyle ポップアップメニュー でググればやり方出てくるよ
>>706 このおっちょこちょいぶりは間違いなくO型。99%確定!
709 :
デフォルトの名無しさん :2012/10/12(金) 22:17:11.20
>>708 そこ人いないんだよなぁ
規制になったら行くよ
でもそこができた途端に2chの規制がなくなったという有難いサイト
710 :
デフォルトの名無しさん :2012/10/13(土) 02:32:10.41
>>705 ポップアップメニューごときでフォームを追加するのは気が引けるなぁ
かと言って
>>700-701 でできたと思ったら、よく見ると
ウインドウに1ピクセルの黒枠が付いてる
ここらへんの作りがやっぱ変だわ
711 :
デフォルトの名無しさん :2012/10/13(土) 02:49:09.74
非難癖の付いた人間は そこで立止ることが自分に不利益となることを知らないのかね ? 状況・現象等が明らかなのだから回避して さっさと先に進めば良いじゃないか
712 :
デフォルトの名無しさん :2012/10/13(土) 09:57:21.01
>>710 APIでメニュー作れよ。MFCを使わんC++プログラマの俺に不可能はない。
>>712 MFC バージョンで辛酸でもなめたの ?w
>>713 いや、ランタイム一切なしでビジュアルプログラムを作るのが俺の醍醐味。
若い時の苦労は買ってでもせよって言うしね APIでの実装もいいかもね
716 :
デフォルトの名無しさん :2012/10/13(土) 17:04:19.44
別に苦労じゃないし。クラスを色々作っていくと結構高度な事も短時間に出来る。 さすがにVB6の即席プログラミングにはかなわないが。 BASICのくせに作りようによってはC++とそう変わらん実行性能を発揮できるしな。 まあ腕がない奴はどの言語を使ってもダメってこと。 へぼな奴が作るC++ソースのプログラムなら、スクリプト言語で勝てる場合がある。
自分の作ったプログラム、他人と比較する機会ってないなぁ
>>716 > 腕がない奴はどの言語を使ってもダメってこと
五寸釘打ちこむなよ、一発で貫通するだろw
一発で貫通させた方が、本人のためだろ。 苦しまずに済む。
つまりのところ ジョブズが馬鹿へ下した鉄槌が iPad 等のタブレットだな とりようによっては酷い製品だよ
721 :
デフォルトの名無しさん :2012/10/14(日) 03:48:13.57
> 腕がない奴はどの言語を使ってもダメってこと VBなら動くからな、CやC++なら確実に止まるんだが
推測でもうしわけないが それは、Basic言語やC言語の特性上、なんらかの処理に対する アルゴリズムが通用しないような話ではなく VB という固有のコンパイラが、ある種独特な処理を行っているので 許容されて動いていたプログラミング技法が、他で通用しないって 話ではなかろうか
>>722 プログラミングについて知らないなら語るなw
初心者か、パソコンに詳しい記者レベルの発言で笑ったぞ。
そういうお前は、VB に精通しまくったあげく VB 以外でプログラム不能となった奴なんだろ
昔から、VBって入門者向けの環境って言われてたのに何でVBからvc++へ移行せずに使い続けたの? 技術者として同情する余地がないクズだよ
うん。で?
だいたい、VBって環境じゃyaccみたいなツール群が作られないじゃないか ポトペタのGUIだけなんてVBプログラマだとhtmlのコーダー以下の老害だよね
>>725 核となる部分を C++ 等で DLL や EXE として作成し
FrontEnd 等、操作、表示に関する部分を VB でちゃっちゃと済ませる
そんなやり方はダメなのか ?
VB は初心者向け、上級者気取りたいやつなら C++
VB 使うなら VB だけ、旧VC の GUI 作成がかったるいなんて言うのは
お前が馬鹿なだけ。
そういう話なの ?
C++ できる俺スゲーって言いたいお年頃なんだろ。 優しくスルーするか、よしよしって言って慰めてやりなよ。
730 :
デフォルトの名無しさん :2012/10/14(日) 19:05:13.35
言語習得に時間を割ける末端の土方プログラマーならC++でも何でも習得したら良い 本業でない人も趣味の人もいるんだよ
731 :
デフォルトの名無しさん :2012/10/14(日) 20:19:52.69
>>728 VB側でDLLの関数をDeclareさせたり、String * Nの定義をさせるCプログラマーは糞。
732 :
デフォルトの名無しさん :2012/10/15(月) 14:00:22.74
質問/~~~ 海=%E6%B5%B7 右のこういうコードって、何て呼ぶの?
真面目に質問したら答えます
736 :
デフォルトの名無しさん :2012/10/15(月) 23:17:50.18
巷で噂のタイマーソフト、どんなのか知らないけど ボタンを押したら計測を開始するプログラムを作って、2つ起動したとします で、同時にスタートボタンを押したい ・つまり、片方から他方に「自分でボタン押せ」と連絡したい ・100msec程度なら遅れてもいい ・でもメールボックスとかじゃなくてイベントで受けたい ・でもサブクラスとか難しいのは嫌 そんな方法はありますか?
自首しろよ
App.PrevInstanceプロパティを使って 1つ目を起動したときShellメソッドで2つ目を起動し (App.PrevInstanceプロパティで1つ目2つ目かを分かるように表示変更し) 1つ目のほうの開始ボタンを押したら AppActivateメソッドとSendKeysメソッドで2つ目のほうに開始の合図を送ればいいんじゃね とプログラミング初心者の私は考えた 試してないから知らんけど
739 :
デフォルトの名無しさん :2012/10/16(火) 01:07:13.34
>>738 起動は別アプリからなのでSetForegroundしてからSendKeysして、
受け側はForm_KeyDownイベントですか
う〜ん、自分で考えた方法よりいいかも
自分で考えたのはFormのWidthを例えば500ピクセルにしておいて
他方からSetWindowPosで501にする。
Form_Resizeイベントで受け取ってMe.Widthが501になってたら500に戻して
Command1.Value=True
ま、趣味のプログラムだわな
人のプログラムがこんなことしてたら激怒しちゃう
SendMessageでWM_Lボタンダウンが正しいのだろうけどちょっと大変
>>736 あたりまえのことで指摘します。
MS は各機能の利用方法を推奨、限定、指示等していませんが
本来、人間が指示をあたえるためにあるような部分を
あえてコンピュータに制御させるようなプログラム技法は
なにやら悪意を感じ、犯罪の臭いが漂ってます。
741 :
デフォルトの名無しさん :2012/10/16(火) 13:22:41.76
>>740 悪意はないのです
タイマーソフトを例にしましたが、実際は自作の動画再生ソフトです
画質が違うけど内容が同じビデオを同じコマで止めておいて
同時に再生開始して見比べたいだけなんですお
それって再生開始位置を細かくしていできる適当な動画再生ソフト使って APIのGetCursorPos,SetCursorPos,mouse_eventで 再生ボタンの位置を同時にクリックすればいいだけじゃね 前にこのAPIをもぐらたたきゲームに使ってハイスコア出したことある
745 :
デフォルトの名無しさん :2012/10/16(火) 20:03:54.13
>>742 WinSockがプロセス間通信にも使えるんだ
746 :
デフォルトの名無しさん :2012/10/17(水) 16:09:46.68
>>744 だな
スコア表示部のハンドルを取得して
キャプションをSetWindowTextあたりで書き換えれば良さそうだ
ハイスコアの表示を書き換えるとかイミフ
748 :
デフォルトの名無しさん :2012/10/17(水) 19:31:40.41
プレイが問題ではなく、ハイスコアなんだろ 意味は十分あるじゃないか、なにも問題はない そういうのはね、言いがかりっていうんだよ
記録を残すという目的じゃなく表示だけ変えたいというなら もぐら叩きのアプリごとにハイスコアを書き換えるソフト作ることが妥当だね
メールスロットはコードは簡単だよね ネットワーク設定さえしておけば あとサービスもいったかな
アトムとかメールスロットとか何なのか書いてないのな
for i = 1 to 10 for j = 1 to 10 for k = 1 to 10 (i, j, kに関する処理) next k next j next i というループ処理なんですが、3つぐらいだとまだいいんですけど、 添え字i, j, k ,,,,,が100個となると面倒です。 どのように書くとよいでしょうか
気もい死ね
755 :
デフォルトの名無しさん :2012/10/18(木) 22:39:47.20
>>753 残念ながらお手上げです
100個を地道に書き上げてください
添え字100個全部使う処理をするだろ?面倒臭がらずにfor文も100個書けや
アルファベットは100個ないのにどうやって実現する気なんだろう
>>730 いやいや趣味でも移行しろよ。他人が書いたコード読めないだろ。
以降するにしても、jsとhtml5な時代。
多言語のコード読むのってそんなに難しくないと思うけど 細かい文法とか覚えてないから使うことはできなくても 読むだけならだいたいどの言語でも大差ないっしょ
同意。けれど、多言語のコードを読んでおきながら趣味でVBはないわー
覚える必要があるのは文法だけじゃないからね IDEとかコンパイルの仕方とか色々あるから 新しい言語覚えるのは面倒
多言語って何かと思ったら他言語の誤字か?
764 :
デフォルトの名無しさん :2012/10/18(木) 23:26:28.06
>>753 は何か勘違いしてる
100次元配列なんて存在はこの世にありえない
Dim a(3,3,3,3,3,3,3,3,3,3,3) さあ実行してみよう
ど、どうなっちゃうの?
CPUが火を噴く
メモリが爆発する
770 :
デフォルトの名無しさん :2012/10/19(金) 01:42:22.39
原子物理の先生が10次元(ちょっとうろ覚え)配列の計算してるとか自慢してた 現実的には多くてもせいぜい4、5次元どまりでしょ
大学ならスパコン使えるかもだし
CやJavaやPascalやJavascriptやActionScriptやPHPならかろうじて読めるけど FORTRANやHSPやPerlやPythonやRubyとかは読めない無理
773 :
デフォルトの名無しさん :2012/10/19(金) 05:31:22.59
次元が異なる馬鹿の多さに驚いた
>>753 何のプログラム作ろうとしてんの?そんな実装が必要になる時点で頭おかしいだろ、壁に1万回頭突きして考え直せ
>>774 1から10まで書かれた紙を袋に入れて100回引く実験をする。
そうすると、その足し算は100から10000までの値になるんだけど、
100になるのは1通り、101になるのは100通り、、、10000になるのは1通り、という
計算をプログラムにさせようと思いまして。組み合わせ爆発起こしてみるという。。。
100回じゃなくて10回でもいいんですけど、n回引いたときにそれぞれ何通りかを
表示するプログラムの書き方がわからなくて困りました。
776 :
デフォルトの名無しさん :2012/10/19(金) 12:42:19.86
>>775 再帰つかうべきだろ。
って言ってみたかっただけ。
10^100通りのパターンを出したいってことでしょ?
10^n通り
全パターン出すのに有限の時間で終わるの・・?
782 :
デフォルトの名無しさん :2012/10/19(金) 13:19:30.36
再帰じゃなくて数学でどうにかならないの?
数学的に解くかアルゴリズムで何とかするしかないな
やってみたけど10^10ですでにヤバい Dim Result() As Long Sub Saiki(Value As Long, Deep As Long) If Deep = 0& Then Result(Value) = Result(Value) + 1& Else Dim i As Long For i = 1& To 10& Call Saiki(i + Value, Deep - 1&) Next i End If End Sub Sub Bakuhatsu(Number As Long) Dim MaxValue As Long MaxValue = 10& * Number ReDim Result(MaxValue) Call Saiki(0&, Number) Dim i As Long For i = Number To MaxValue Debug.Print i, "...", Result(i) Next i Erase Result End Sub Private Sub Command1_Click() Call Bakuhatsu(CLng(Text1.Text)) End Sub
そういうときはスーパーコンピューターがあるわよ
787 :
デフォルトの名無しさん :2012/10/19(金) 13:53:59.42
788 :
デフォルトの名無しさん :2012/10/19(金) 13:54:30.44
どう見てもメモリはヤバくないだろう n=100でも古いPCでも問題ない(メモリ的には)
64KBという制約以内に収まる
n=10で3時間かかる
お姉さん状態
不可思議って10^64だから、10^100=不可思議*10^36
ちなみに、一万不可思議=一無量大数だって (Wikipediaより)
何故日本人はそんな膨大な単位まで用意したのだろうか。昔から天文学でも盛んだったのか
>>775 の件だけど再帰使わないで途中経過を利用すれば早くなりそう。
n=10なら
n=1の結果二つ→n=2の結果
n=2の結果二つ→n=4の結果
n=4の結果とn=1の結果→n=5の結果
n=5の結果二つ→n=10の結果
結果の持ち方や→の演算をちゃんと考えないといけないけどね。
798 :
デフォルトの名無しさん :2012/10/19(金) 19:06:40.64
>>775 10 を 100 回引いても 10000 にはならない
799 :
デフォルトの名無しさん :2012/10/19(金) 19:11:18.05
配列の要素としては、並びとパターンの2つしかない つまり用意する配列は2次元では?
800 :
デフォルトの名無しさん :2012/10/19(金) 23:40:05.24
IIFって知ってた? intNumber = IIf(intNumber <> 0, 0, 1)
知ってるよ ときどき使う
intNumber = (intNumber != 0 ? 0 : 1);
803 :
デフォルトの名無しさん :2012/10/20(土) 04:45:12.07
これ知ってた?シリーズやってよ
Sub Test(ByRef a) a(0) = 4 End Sub Sub Main() a = Array(1) Test(a) Debug.Print a(0) = 1 End Sub 引数が参照渡しなのに配列が値渡しされる、これ知ってた?
===== 変数のメモリ・アドレス(下位)を取得 VarPtr VarPrtArray VarPtrStringArray ObjPtr StrPtr ===== 関数のアドレス(ポインタ)を取得 Public Function LngPrcPtr (ByVal AddressofProcedure As Long) As Long LngPrcPtr = AddressofProcedure End Function
806 :
805 :2012/10/20(土) 10:06:27.91
VB5 で使っていたが VB6 でも有効かは知らん
807 :
デフォルトの名無しさん :2012/10/20(土) 10:55:51.93
VarPtrは使うなというけど、使わなければならないAPIとかあるもんね
世間のお役には立てないがこれ知ってた?ネタ。 ↓はコンパイルが通りませんでした。 Option Explicit Sub Main() Dim i(2) As Integer For i(2) = 1 To 10 For i(1) = 1 To 10 'コンパイルがぁぁ Next Next End Sub
809 :
デフォルトの名無しさん :2012/10/20(土) 15:03:07.36
おちんちんをぱみゅぱみゅすると白いオシッコが出るの知ってた?
VB6にはもう小ネタしかのこってないのか。 VB6にはもう厭きた ヒマなのでVB6と同等なことができるのならjsとhtml5でもやろうかと
何年前から時間とまってんだよwww
>>810 言語を習得した、そこまでは情報処理屋として準備ができたという地点。
だが、処理対象となるものを理解、整理、モデル化し、
何がしかのことをコンピュータ化するという本来の目標に踏込むことなしに…
終わったという事だな。
そんなのは、免許は取得したが臨床経験が無い医者と一緒だよ。
813 :
デフォルトの名無しさん :2012/10/20(土) 22:12:24.22
>>808 知らなかったー
Forで指定された変数は既に使用されています
つかMSDNのFor文の項目に配列を指定すんなって書いてあるけど counter 必ず指定します。カウンタに使う数値変数を指定します。配列変数およびブール型 (Boolean) に含まれる変数は指定できません。
>>805 使ったことないけど
オブジェクトブラウザの非表示のメンバを表示ってすると VBA._HiddenModule のメンバとして出てくるよね
>>815 そう書いてある割には二重でなければOKなのが不思議
どうして成立してるのか内部が分からないのに そんな危険なコード書けません
819 :
デフォルトの名無しさん :2012/10/20(土) 23:28:20.22
これ知ってた?ネタ(初心者編 For i=1 to 10 If なんたら Then Exit For 処理 Next If i=11 Then 10回処理されてる
For i=1 To 10 If i > 100 Then Exit For Debug.Print i Next If i = 11 Then MsgBox "10回処理されてる" でいいの?
まさか最後のループの後にカウンタが1カウント増えてるって話?それってどの言語でも同じじゃね
int i; for(i = 0; i < 10; i++) { if(条件) break } if(i == 10) { ループは途中で中断しなかった } こんなコードよく書くよね。
どの言語ってBASICと同じタイプのforループはFORTRANぐらいだと思うけどねw
>>821 言うまでもないと思うが、ループのカウンタ用の変数をループの外で使うのは
普通は良い作法とは言えない。
825 :
デフォルトの名無しさん :2012/10/21(日) 02:11:19.97
>>823 ループ中に異常が発生して抜けてしまうような場合に
ループ処理を正常に全部処理したか判定が必要なことって良くあるんだよね
で、異常が発生した時にフラグをセットして、それを後で参照するより
カウンタが全部回ったか見た方がフラグ変数を用意するよりスマート
826 :
デフォルトの名無しさん :2012/10/21(日) 02:22:51.79
if broke then のほうがスマートじゃね? ループ終端回数に意味があるように思えてしまうから
Delphiなんかだと、ループ外でループ制御変数を使うと警告が出るね。
>>826 慣用句みたいなものだろ。
ループの外で、ループ変数を参照してるのを見ると
それだけで中断判定ってわかるよ。
ループの外でその変数みるようなコード書くやつは、その変数にループ外の値を代入してるかもしれん VBのスコープでは保障されないが ループ変数と言うからにはループの中で完結してるべき
・自分ルールでは禁止事項 自分(人間)が最適化のようなことをしている。 変数を多目的に使用している。 ・個人の趣味 FOR は制御条件が回数、と狭いのであまり使わない。
>>823 俺は書かない、理由は
>>818 >>824 > どの言語ってBASICと同じタイプのforループはFORTRANぐらいだと思うけどねw
偉そうにレスするなら PL/I とか Pascal ぐらいは知っとこうよ。
>>832 > 偉そうにレスするなら PL/I とか Pascal ぐらいは知っとこうよ
偉そうなレスしたいのであれば…
PL/I、Pascal 等の○○系言語、のようなことを書きたいのか
明瞭な文章を書いてくれよ。
多分、上記の記述だと、プログラムもさぞかし難解な記述に
なっていそうだね。
引数がByrefでも Call Test((value)) Test (value) こうすると値渡し。
>>833 ○○系言語?
何を言いたいのかさっぱりわからん。
明瞭になったのは、君が悔しがってると言うことだけだな、チーン (w
VB6スレで言うのもなんだけど 最近のVBだとFor i As Integer = 0 To 10とか書けるからそうしてる
>>832 お前さん、PL/Iで仕事したことあるんかいw
>>834 それ値渡しじゃなくて、値のコピーの参照渡しだった気が
Callの引数にByVal付けるのが正解じゃなかったか
>>837 > お前さん、PL/I で仕事したことあるんかいw
ごめんねぇ、これがあるんだな。
汎用機を設備の制御に使うという、かなり特殊なことしてたからね (w
ちなみに、汎用機のアセンブラも経験あったりするし。
特殊を馬鹿と置き換えたら、すんなり理解できた。
今見たら馬鹿かもしれないけど、当時はそれしか方法なかったからねぇ。 まあ、君には想像できない世界だと思うが。
>>839 って事は俺と似たような歳か
3000レベルのFORTRANだったら俺も使ってたw
>>841 だろうな (何がだろうだかわからんが)
自分は Intel MDS だけだったから汎用なんぞ知らんわw
>>832 >>823 のようなコードを書くときどう書くの?
フラグでも用意するつもり?それってダサいよ。
>>842 水準 3000 をリアルに使ってたなら、
>>842 さんの方がかなり年上ですよ。
私が学生の時ですら FORTRAN 77 になってましたから。
>>843 まあ、汎用機のアセンブラを書いたことある奴はかなり少ないはず。
汎用機を製造しているような会社関連か研究室とかでないと、経験できないと思うし。
あまり書くと特定されそうだから、 ここら辺でやめとくけど。
> 自分は Intel MDS だけだったから汎用なんぞ知らんわw
6800 系の方に行ってたから、8080 は触ったことがないなぁ。
80系は Z80 からですね。
南アフリカでは信号で止まったら強盗にあうから、日本でも信号では止まらない、 それがいい作法だと思っている取り返しのつかない老害がいるようだな。
>>844 普通にフラグを用意する。
ダサいかどうかより、動くことが保証されていることの方が大事だから。
MS がきちんとドキュメントを出してくれればいいんだけどね。
>>847 動かしてみれば動くことは確認できるだろ。
>>832 MSDNのVBのループ構造の項でForの挙動が書かれてて
>>823 は仕様通りの動作だよ?
For ループの実行は、次のように行われます。
1. counter に start の値が設定されます。
2. counter と end の値が比較されます。counter の値が end より大きい場合は、ループ内の statements は実行されずに、ループが終了します。
(increment が負の値の場合は、counter が end より小さいかどうかが判定されます。)
3. statements が実行されます。
4. counter に increment が加算されます。increment を指定しなかった場合は、1 が加算されます。
5. 手順 2 から 4 を繰り返します。
>>847 動くことが保証されているよね。
お前の主張は崩壊したねw
そこに気づくとは…やはり天才か
854 :
デフォルトの名無しさん :2012/10/21(日) 17:05:48.38
巷で話題のウイルス、VisualStudio2010で作成したプロの仕業ってスレで VS製品のIDがEXEに埋め込まれるってレスがあったのだけど 別にいいのだけど、予備知識として知りたいので 会社にもVB6ある人、EXEをバイナリコンペアしてみませんか
>>851 そんなことは誰だってわかってるよバカかよ
バカでーす(^ω^)
>>849 俺は
>>847 ではないが、そのドキュメントの出自を明示してくれないか
昔の日本語ヘルプは、For-Nextは最低1回はループ回るように書いてあったはず
実際にはそのドキュメントは間違ってるんだが、どっかで改訂されたのか
その記載があるせいで要らんコード書かされたなぁ
>>857 VB6と一緒にインストールされたMSDN ライブラリ Visual Studio 6.0だからVB6持ってるなら自分で確認してくれ
MSDN ライブラリVisual Sutudio 6.0
Visual Basic ドキュメント
Visual Basic の使用方法
プログラミング ガイド
Visual Basic の基本
プログラミングの基礎
制御構造
ループ構造
mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbcon98.chm::/Html/vbconloopstructures.htm
ちなみに MSDN ライブラリVisual Sutudio 6.0 Visual Basic ドキュメント Visual Basic の使用方法 プログラミング ガイド Visual Basic の基本 プログラミングの基礎 制御構造 制御構造の使用方法 mk:@MSITStore:C:\Program%20Files\Microsoft%20Visual%20Studio\MSDN98\98VS\1041\vbcon98.chm::/Html/vbconworkingwithcontrolstructures.htm ここには以下の記載があってループ終了後のカウンタの内容は保障されてる 制御構造の終了 ・ループを完全に終了した場合は、カウンタ変数 (counter) の値は上限 (end) にステップ数 (increment) を加えたものになります。 ・ループの途中で終了した場合は、カウンタ変数 (counter) の値は適用範囲の通常の規則に従った値となります。 ・コレクションの最後まで繰り返した場合は、カウンタ変数 (counter) の値は、値がオブジェクト型 (Object) の場合には Nothing に、バリアント型 (Variant) の場合は Empty になります。
>>854 > 会社にもVB6ある人、EXEをバイナリコンペアしてみませんか
いいですよ?
あなたの持ってるEXEください。
>>847 フラグも五十歩百歩だね。
ダメな奴はすぐフラグを使う傾向にある
それならループを抜ける時にgotoを使う方がだいぶまし。
あるいはCなら終了条件をループの中に書く手もある。
>>857 普通に考えて君が思ってるような仕様はあり得ない。
前置のwhileと後置のwihleのどちらが仕様頻度が高いか考えればそれは自明だと思うけど
>>857 もういいかげん水に流してやれよw
今の自動翻訳のMSDNよりはマシじゃないか
同じソースをコンパイルしてハッシュとって異なっていたら環境毎に変化があるってことだろうか
864 :
デフォルトの名無しさん :2012/10/21(日) 18:41:19.98
>>860 同じソースを別のVSでコンパイルして、
その2つの生成されたEXEをコンペアという意味です
コンペアエラーが発生したなら、そこにVSのIDが埋め込まれているのではないかと
バイナリにバイナリ生成日時とか埋め込まれてるんだろ。
>>858-859 ありがと。VB6環境はディスククラッシュで吹っ飛んだままだったんだよ
とりあえずCD探しまくって確認した
ちなみに
MSDN ライブラリVisual Sutudio 6.0
Visual Basic ドキュメント
リファレンス
ランゲージ リファレンス
ステートメント
A-H
For...Next ステートメント
にはこのような記述が
ループ内の一連のステートメントがすべて実行されると、引数 step の値が引数 counter に加算されます。
この時点で、終了条件が満たされていない場合にはループ内のステートメントが再び実行され、それ以外は、
ループから抜け出して Next ステートメントの次のステートメントに制御が移ります。
間違ってるよなぁ、この記載
俺の記憶がたしかならVB2.0からこの記載のまま。単なる翻訳間違いだとは思えんけど
>>861 実際にどういう動作かではなく、ドキュメントの記載の問題
0回で抜けるという仕様だと解っていても、それが明示されていなければ、そう扱えない時もあるんだよ
趣味のプログラムなら好きにしろって話だけどな
>>866 趣味じゃないのなら
なおさら自分で正しい情報を調べろよ
>>861 負け惜しみを言っているようにしか聞こえない。
さらに言えば、こんな基本的な仕様も知らない人間が何を言ってるんだとしか言いようがない。
え、何? 美人化に農芸化?
恥ずかしい馬鹿だな。
例えば後置のwhileより前置のwhileの方が圧倒的に使われる理由のひとつは、
場合によってはループ内の処理を一度も実行したくない時がしばしばあるから。
これはwhileに限らずforでも同じこと。
要するに件の人(
>>857 ?)はその必要性を感じたことがない程プログラミングの経験が浅いか、
または低レベルで間抜けなコードしか書いてないということを語るに落ちてる。
そもそもforループみたいな基本中の基本の制御構造の仕様なんか普通は真っ先に
把握するものだと思うが。
>>872 ドキュメントの記載の問題だって書いてあるのが理解できんのか?
なんでワロタかというとな、 うっさいハゲ!
そういうのを負け惜しみって言うんだよ。 自分の問題をドキュメントの問題とやらに転嫁してるだけじゃないか。 いい歳こいてるだろうに馬鹿か。
>>866 そのページ見てみたけど
>指定した回数だけ、一連のステートメントを繰り返すフロー制御ステートメントです。
と書いてあるし
>値 実行条件
>正の数または 0 counter <= end
>負の数 counter >= end
と書いてあるわけだから条件みたさなけりゃ実行しないともとれるんじゃねの
てめえの言うような”必ず1回実行する”という記述は見当たらないのだが
878 :
デフォルトの名無しさん :2012/10/21(日) 21:11:24.82
MSDNのFor文の解説より プログラムの実行がループに移り、ループ内の一連のステートメントがすべて実行されると、step の値が counter に加算されます。 この時点で終了条件が満たされていない場合は、ループ内のステートメントが再び実行されます。 終了条件が満たされている場合は、ループから抜け出して Next ステートメントの次のステートメントに制御が移ります。 ↑この日本語だと ループ内の一連のステートメントの実行の方が終了条件判定よりも先に行われる(=必ず1回実行する)って解釈しちゃうよな。
ああ、でもそのまえにループの実行条件が記述されてるか(汗)
881 :
デフォルトの名無しさん :2012/10/21(日) 21:37:43.92
For文の説明にあるカウンタとして配列変数は使うなと書いてあるのに配列使って動いたっていう安全が分からない実行が怖いって話題じゃなかったの?
>>821 の書き方をしないやつはダサいって話だろ。
Forループを途中で抜け出そうなんてのは早めに始末しちまおうぜ
885 :
デフォルトの名無しさん :2012/10/21(日) 22:45:27.44
>>775 > 1から10まで書かれた紙を袋に入れて100回引く実験をする。
> そうすると、その足し算は100から10000までの値になるんだけど
>>821 > For i=1 To 10
> If i > 100 Then Exit For
10 x 100 で 10,000 になったり
1 から 10 でのループで 100 より大きいを判断したり
なんなのだ、このスレは
775はタイプミスの可能性もある 821は819の言いたいことを実現できりゃいいわけだからループ途中抜けしない条件式ならなんでもいいのだろう
2度も10000って書いてタイプミスはねえよw と言いたいところだが最近のMS IMEさんは予測変換機能もあるからなあ・・・誤変換増えそう
888 :
デフォルトの名無しさん :2012/10/21(日) 23:54:54.11
819だけど何か知らんが俺が悪かったよ、次行ってちょうだい
VB6しかできないバカは死ぬべき
>>888 なんか知らんがって
まだわかってないの?
かなり昔の話、Fortran の Do もそうだったと思うんだけど、 Basic の For 文って、1回はかならず実行してたんだよね。 たしか N-Basic と N88-Basic で違ってたような記憶がある。 それからこんな使い方 n = 10 For i = 1 To n n = 1 Next 今は 10回ループするけど、昔の Basic では 1回しかループしなかった。 こういう仕様変更を経験した身としては、ループに使った変数をループの外で 使うのは抵抗があるかなあ
>>892 お前さ、昔そうだったから、今もそうするという
生き方をするならさ、
昔バグがあったから今もそのバグに対応する
書き方をするという生き方をするの?
昔そんな命令がなかったから
今もそんな命令使わないって生き方するの?
昔不便だったから、今も不便なやり方をするの?
何のために、世の中進化してると思ってるの?
無駄じゃない?馬鹿じゃない?
>>892 ループに関わる変数をいじるほうが抵抗があるのだが・・・
895 :
デフォルトの名無しさん :2012/10/22(月) 04:16:25.71
自分の考えを通したいだけのやつとは話すだけ無駄だぞー 未だにVB6使ってて今も昔もねえわ
経験の少ないやつは考え方に深みがないなぁ〜 思想の浅さっていうか。
897 :
デフォルトの名無しさん :2012/10/22(月) 06:52:07.82
確かにループ変数をループ外で使ったりループ中で変更するのは好ましくないけど それは場合によってはアリで、頑なに否定する人はその知識や発想がなかったのに 知ってるふりしつつ反対してるように見える
>>891 お前はデバッグ時に、「揚げ足とりやがって」 とボヤクんだなw
>>898 ん? デバッグはしてないよ? は?
揚げ足取ってるやつに対して揚げ足取ってるって言った
Forごときでここまでモメられるって人生楽しいよな。
>>900 …ごとき
概ね、そういったことで、「何故だか解りません」 のドツボに
はまるのではないのかね ?
For i = 1 To 10 Next i i = 1 While i <= 10 〜 i = i + 1 WEnd i = 1 Do While i <= 10 〜 i = i + 1 Loop やはりForは時代遅れだ
>>902 その比較で時代遅れという結論になる理由をkwsk
Do Until Loop を使ってる奴を見たことがない件
905 :
デフォルトの名無しさん :2012/10/22(月) 16:14:39.74
テキストファイルをOPENで開いてるときにDo Until よくお世話になってるよ。
i = i + 1 これがダサいな
DoステートメントでWhileとUntilの使い分けってしてるの?どういう基準?
908 :
桃白白 :2012/10/22(月) 16:16:05.85
While-Wendを使う奴なんかおらんやろ
910 :
桃白白 :2012/10/22(月) 16:16:42.47
>>907 Notを記述したくない心境にあるかどうか、それが基準
MSDNのランゲージリファレンスのDo Loopの項ではWhileとUntilの違いについて触れてないのな プログラミングガイドのプログラミングの基礎のループ構造の項ではWhileとUntilの違いが書いてあるけど ランゲージリファレンスってなんか不十分だよな
912 :
デフォルトの名無しさん :2012/10/22(月) 16:19:57.92
>>906 せめて++と+=はサポートしてほしい。
VB6.1で期待しようか
Windows8でもVB6使えるん?
915 :
デフォルトの名無しさん :2012/10/22(月) 16:32:46.96
Windows8 VB6 でググるといろいろでてくると思いますが、 残念ながらWindows8でVB6はつかえますん
そうか使えちゃうのんか・・・
LinuxやMacでVB6使えるん?
REALbasic
ステマ
Rbいまさら覚えるくらいならMonoやるわ
923 :
デフォルトの名無しさん :2012/10/22(月) 20:45:34.92
>>902 i = i + 1ってダサいよね
せめてInc i が欲しいところ
Function Inc(n) Inc = n + 1 End Function
VB使いの程度が知れるな
そう捨て台詞をはいて逃げて行きました
WinHTTP使ってVB6で2chブラウザ作ろうと思った際に2chブラウザのガイドライン(モナジラ?)でgzip形式可でリクエストしろってあるけど、VB6ってgzip形式のファイルはどう扱うのがスマート?
VB6でx86エミュを作りたい
VB6で次世代ブラウザを作ってIEやFireFoxやオペラを下してやる
ユーザーによる拡張性の高いアプリケーションを作りたい プラグイン形式もいいけど、そんな難しいものじゃなくてVBSファイルやJSファイルからアプリを操作できるようにしたい つまりVB6で機能的にはシンプルなそういうアプリケーションにしたいんだ
はい次の質問どうぞ
>>893 なんだか話が飛躍してるな。
C ならこう書くね
for(int i = 0; i < 10; i++)
これだとループが終了したら i >=10 になっているのが明確になっている。
だけど VB は
For i = 0 To 9 Step 1
と書くから、ループが終了した後の i がどうなっているかは、コンパイラの
実装者まかせになってるんだよ。
その部分にたよったコーディングをした結果は
>>892 になるわけさ。
VBはMSDNに仕様書かれてんだから問題ないだろ
934 :
デフォルトの名無しさん :2012/10/23(火) 03:42:25.97
>>932 それC++だからiはループ後はスコープ外でそもそも参照できない
JavaScriptだとでその形式で書いてもループ後も残るね
スコープは狭くしましょうとか
目的外使用(カウンタ)はやめしょうとかは
スタイルとかの話だからどっちかにはまとまらんね
システム内の全変数をグローバル変数(標準モジュール)で宣言するとか
いわゆるサブルーチン内で使う変数は全て引数にしてByRefで用意とか
関数台帳を用意してサブルーチンが必要なったら申請書を書いて
FUNC_AABB002XH5みたいなのを申請順に割り当てられるとか
VB6の場合は謎ルールは場所により色々あったなあ。
> それC++だからiはループ後はスコープ外でそもそも参照できない int i; for(i = 0; i < 10; i++) こう書けばいいだけ。
936 :
デフォルトの名無しさん :2012/10/23(火) 05:16:47.21
Debug.Clsを実行したい
937 :
デフォルトの名無しさん :2012/10/23(火) 16:03:38.80
>>934 >システム内の全変数をグローバル変数(標準モジュール)で宣言するとか
(略っとな)
>FUNC_AABB002XH5みたいなのを申請順に割り当てられるとか
こういうのを求める管理者は開発言語に関係なく存在するだろう
>>934 それでも時流ってもんはある
構造化言語が主力になる以前はそれが普通だった時代もあったりするわけだよ
今時の言語でこんなこと言い出すやつとは仕事したくないぜ
杏子の牌譜が全部あればWindows版や天鳳ブラウザの解析スクリプトで特上だけでの成績とか表示できたのだが
誤爆ごめん
941 :
デフォルトの名無しさん :2012/10/23(火) 22:54:50.57
はたと膝を手で打つような或いは目からウロコなコードを見せてくれろよ
それってトリッキーなコードってことかいな?
943 :
デフォルトの名無しさん :2012/10/24(水) 10:50:27.37
トリッキーにも程があるけど、 こんなことできるんだーというご自慢のコードがあれば 最近良く使い出したのは、ループじゃない処理でDo-Loopを使う Loopの前行には必ずExit Doを入れるんだけどね そのDo-Loopの中にFor-NextがいくらネスティングしてようがどこでもExit Do一発で抜けられる
944 :
デフォルトの名無しさん :2012/10/24(水) 11:05:33.45
>>943 のFor-Nextを一発で抜けるというより、
何かの手順をたくさん重ねてようやく何かに辿り着けるような処理で
その手順ごとに例外が発生するような、例えば
ハンドル取得して、オープンして、回線接続して・・・
と、それぞれが成功しないと次に進めない場合に
その処理全体をDo-Loopで囲ってしまうと都合が良い
>>943 それは何十年も前から有るテクニック。
↓
関数に括り出せといわれる。
↓
関連する変数が多すぎて引数に書けないという。
↓
凝集度を高めろといわれる。
まぁ、こんなかんじ。
そんな無駄なことするなら、もうgotoでいいじゃねえか・・・
947 :
デフォルトの名無しさん :2012/10/24(水) 13:45:24.72
>>945 関数に括り出せといわれる。
↓
関連する変数が多すぎて引数に書けなくなったりしないの?
↓
全部グローバルにしちゃえよ
↓
やったね♪
948 :
デフォルトの名無しさん :2012/10/24(水) 19:29:27.18
グローバル変数は増やしたくない でも前回値は欲しい そんな時はStatic。 でもそれを外部から初期化したいケースがでてくる どうする?
949 :
デフォルトの名無しさん :2012/10/24(水) 19:44:52.89
Singletonクラス作れば?
>>946 趣味のレベルで個人のみの使用だったら問題ないけど、仕事で自分以外に人間が
触るコードだとスパゲティコードの始まりになるよ。
特に初心者がやりそうで怖い。
>>945 ,947
関連する変数が多すぎなんていう関数の設計(関数の構成含む)自体まずいだろ。
グローバル変数にするなんてもってのほかだしw
まともな関数を設計しろと言われているのと同じだな。
953 :
デフォルトの名無しさん :2012/10/25(木) 11:53:17.24
俺は変数名にこだわる 良い変数名が思いつくまでじーっと考え込むこともある 和英辞書をひくこともあれば、思い切って漢字の変数名を使うことも辞さない そこまでしてはじめて良いプログラムが出来るのだといえよう
954 :
デフォルトの名無しさん :2012/10/25(木) 12:00:35.19
全面否定はしない だが 良い変数名と、それを考え込むは無関係。 考え込んだものは、以後を考慮すれば また考え込むことが懸念される。 回避しようとすればコメント等が発生する。 時間を費やすのも、良い事ではない。 素晴しい物でも出来上がりが百年後では 話にならない。
What_Time_Is_It_Now( )
956 :
デフォルトの名無しさん :2012/10/25(木) 12:27:31.88
Dim This_Value_Is_Set_In_True_When_The_Integer_I_Has_A_Value_Grater_Than_MAXCOUNT As Boolean
957 :
デフォルトの名無しさん :2012/10/25(木) 13:09:08.38
長い変数名は適度に省略しないとだめだお。
958 :
デフォルトの名無しさん :2012/10/25(木) 13:29:09.02
>>948 こ、こういうのを求めてるってこと?
Sub Hoge( _
Optional Initial As Boolean = False, _
Optional InitialValue As Integer)
Static Fuga As Integer
If Initial Then
Fuga = InitialValue
End If
Debug.Print Fuga
End Sub
>>952 ん?そこまで言い切れる理由は?
>>945 の関数に括り出す状況が分からないから何ともいえないけど
どうしてもグローバル変数にしなければいけない理由があるのかな?
ってかさ、他人から関数に括り出せと言われるレベルの人間が
グローバル変数が必要とまともに判断できるとは思えないんだけど。
それとも一般的な話でグローバル変数は必要と言ってるだけ?
960 :
945 :2012/10/25(木) 15:12:41.37
>>959 なにか勘違いしてるかもしれないけど、「関数内に繰り返さない繰り返しブロックを作れば、途中脱出楽勝だぜ」という
テクニックは昔からあって、そして大抵「そんなことしたければ関数に括り出せ」っていわれてきたって事だよ。
で、「そのブロックは関数内の他の部分と結合度が高くて、関数に括り出すなんてできないんだ」と言い出す奴多数ってこと。
961 :
959 :2012/10/25(木) 16:10:18.91
>>945 そういうことか。
繰り返しブロックにできるのであれば関数にできそうなんだけど。
そもそも結合度が高いって単に処理が入り乱れてるだけのようにも思える。
例えば、一つの関数に複数の機能を持たせてるとか、
単純な処理の組み合わせでいいのに、一気に処理をやろうとしてるとか。
結局のところ結合度が高くて関数にくくり出すことができないこと自体、
関数の設計に問題あると思う。
>>948 Staticがダメならフィールド値にするだろ。
>>949 可能な限りシングルトンは使いたくない。
>>952 グローバル定数はよくても、変数はいらない。無くてもできる。
>>956 camel式にするんなら _ はいらないだろ
>>961 一つの関数に複数の機能を持たせてるってのは、
古いシステムじゃよくある事だね。
COBOLとかFORTRANの時代はそうだ。
かつてFORTRANのシステムをCに置き換える案件があったけど、
解析だけで地獄のようだった。
一つの関数に複数の機能、なんてのは普通で、構造化できるのにやってない。
一つの関数が2000とか3000ステップあるのは普通。
グローバル変数使いまくり。
関数の途中でファイル書き込みある。
グローバル変数もファイルも、他のタスクから利用されてて、テスト結果に
再現性が無いとか。
まあシステムが作られた当時は、関心の分離だとか、結合度を下げるだとか
あまり知られてなかったみたいだけど。
967 :
959 :2012/10/25(木) 19:10:16.36
>>966 >>945 ,
>>960 の書き込みだと既存のコードの修正の話とは全く思えないんだけど。
話が変わってきてるしスレ違いの話題だからこの件ではもう書き込まない。
>>964 なくてもできるが、使った方がスマートなコードになる場合もあるし
頭の固い奴が作ったプログラムは保守メンゴだぜ?
>>968 頭が硬いのはお前じゃね?
グローバル変数がどうしても必要だと思ってるんでしょ?
>>969 ファビョるほどの事でもないだろ?どうしたん?
頭が固いのではなく硬いと言ってるから、きっと石頭なんだろ? デコッパチってしってるか?
972 :
デフォルトの名無しさん :2012/10/25(木) 22:48:45.95
他人に説明させる前にデコッパチについて 自分の解説をしてくれ
ヒント: もーれつア太郎
そんなの知ってる歳のオッサンが「ヒント」なんてガキみたいなことやってるなよ。 よくそれで自分が情けないと思わないもんだなマジで。
定年後でヒマなんだろう
そんなの知ってる歳だってよくわかったおっさんも褒めてやれよ。
俺はぐぐったが・・・
979 :
デフォルトの名無しさん :2012/10/25(木) 22:59:27.88
ゴレンジャー知ってたらオッサンン認定でつか?
アニメのほうなら見た
982 :
デフォルトの名無しさん :2012/10/25(木) 23:01:07.24
印度の山奥で修行しなおせ
アノクタラサンビャクサンボダイ・・・ オンタタギャトウドハンパヤソワカ・・・ 子供の頃は気付かなかったが、今思うと般若心経と儒教がごっちゃまぜだったんだな。
ヒント: ヨガの眠り
986 :
デフォルトの名無しさん :2012/10/25(木) 23:16:00.14
なんだ、爺だらけじゃねぇか
987 :
デフォルトの名無しさん :2012/10/25(木) 23:32:51.59
987なら民主党の朝鮮人議員死滅
ところで、グローバルグローバルって言ってるけど、 VB6的には、標準モジュールに持たせたPublicなメンバ変数って事でいいか?
最終回でキレンジャーが爆発するのが悲しい。 レインボーマンは「1ドル360円」という台詞が時代を物語ってる。
>>988 いや、Formのグローバル変数も使っちゃイカンのだとか。
992 :
945 :2012/10/26(金) 10:26:25.45
>>967 >
>>945 ,
>>960 の書き込みだと既存のコードの修正の話とは全く思えないんだけど。
??
既存のコードの修正の話はしてないんだが…
なぜ俺にレスする。
>>990 それはクラスのメンバ変数だろうw
>>988 自分で定義したものだけじゃなくて、
暗黙に定義されるForm1, App, Screenも忘れないであげてください。
Fromの変数もグローバルスコープだから、グローバル変数ダメよというならそれも使用禁止にしないとだね
995 :
デフォルトの名無しさん :2012/10/26(金) 13:23:07.08
>Syntax Error >_
996 :
デフォルトの名無しさん :2012/10/26(金) 13:51:38.87
Leftと違ってrightのrが大文字にならないの
Me.Right
Formのメンバ変数、各種コントロールはどうもpublicになってるけど、 (Form外から直接アクセスできるでしょ) クラスやFormのメンバ変数ならPrivate にしてたらグローバルじゃないだろ。 標準モジュールならシングルトンのように扱えてしかもpubicなメンバ変数なら それはグローバル変数。
グローバル乞食はうるさいな
1000 :
デフォルトの名無しさん :2012/10/27(土) 01:00:57.72
せん
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。