1 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:03:01 ] ここは Visual Basic 〜6.0 の質問スレです。 質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、 「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。 VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。 ○ 質問者の心得 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。 二.VBScript、インストーラーなどはこのスレでOK。 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。 四.荒らしは相手しない。 ○ 回答者の心得 一.答えられない質問は無駄に罵倒せずスルー。無理するな。 二.代用法を強制しない。 三.回答する上で必須ではない情報をむやみに聞き返さない。 四.荒らしは相手しない。 五.VB情報募集中。 六.回答は質問者が理解できるよう具体的に。 MSDN Online Japan ホーム www.microsoft.com/japan/msdn/default.asp Visual Studio 6.0 Service Pack 6 msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx Google www.google.co.jp/ ※「まず自分で調べる」クセを身につけよう。
42 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 11:47:26 ] 22のコードは日本語環境だとShift_JISで出力され、 22はShift_JISで出力したいと言っている。 一体どこに問題がある?
43 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 12:21:35 ] 変数宣言してないとき(必須にしてる時)に、デバッグモードで先頭行に カーソルはあると思うが・・・
44 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 13:02:43 ] プロセスにアタッチして、ディスアセンブルすればわかるかもよ
45 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:52:01 ] >>38 たしかに俺もウソソースを書いた。 けどすべての答えが出てたんだから自力でなんとかしてほしかった! Dim strPath As String Dim buf As String Dim buf2() As Byte Dim buf3(0 To 1) As Byte Dim fileno As Integer fileno = 1 buf = "1234" buf2 = buf buf3(0) = &HFF buf3(1) = &HFE strPath = "C:/test.txt" Open strPath For Binary As #fileno Put #fileno, , buf3 Put #fileno, , buf2 Close #fileno
46 名前:デフォルトの名無しさん [2008/03/17(月) 23:20:39 ] 未だにOpenステートメントを使う石器人がいるとは…
47 名前:14 mailto:sage [2008/03/18(火) 01:15:40 ] >>40 Nothingと比較ができる型ってつまり 値型と参照型の話ですよね? 大丈夫と思います。 >>41 そうなんですか、知りませんでした。 ありがとうございます。 値型の変数を保存するために実際にメモリ上に領域が確保されることをなんと言うのでしょうか?
48 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 06:33:25 ] オブジェクト型の変数にオブジェクトのインスタンスが格納されると思っているなら間違いだよ
49 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 19:06:10 ] >>46 お前はVB6以前のスレで何を馬鹿なこと言ってるんだ
50 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:14:26 ] >>49 >>46 は、FileSystemObject ぐらい使えとでも言い鯛のでは?
51 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 20:58:40 ] FileSystemObjectでUNICODEを保存するソース ↓
52 名前:今日も雲弧 ◆bKaGbR8Ka. mailto:(´・ω・`)ショボーン [2008/03/18(火) 22:59:41 ] VBSで質問があります。よろしくお願いします。(ペコ IF文の部分でobjDic11とobjDic12のItemを書き換えました。 IF文の部分では書き換わっているのに、ループを抜けた後に 再度objDic11を参照すると書き換え前の状態なのです。 どこが悪いのでしょうか?何故こうなるのでしょうか? お教え下さい。 以下にコードを4分割して貼ります。
53 名前:今日も雲弧 ◆bKaGbR8Ka. mailto:(´・ω・`)ショボーン [2008/03/18(火) 23:01:02 ] Sub RankMark 'On Error Resume Next Const UpTo_Soutou = 2500 Const UpTo_Gensui = 2000 Const UpTo_Taisyou = 1750 Const UpTo_tyuujyou = 1500 Const UpTo_Syousyou = 1250 Const UpTo_Jyunsyou = 1000 Const UpTo_Taisa = 950 Const UpTo_tyuusa = 800 Const UpTo_Syousa = 650 Const UpTo_Taii = 500 Const UpTo_Tyuui = 400 Const UpTo_Syoui = 300 Const UpTo_Soutyou = 200 Const UpTo_Gunsou = 150 Const UpTo_Gotyou = 100 'まずRANKとMARKのobjDicStarsを作る Set objDicStars = CreateObject("Scripting.Dictionary") Set objFS3 = WScript.CreateObject("Scripting.FileSystemObject") Set objFile3 = objFS3.GetFile("星.txt") Set objTS3 = objFS3.OpenTextFile("星.txt")
54 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 23:01:40 ] 必要最小限のソース貼れよ・・・
55 名前:今日も雲弧 ◆bKaGbR8Ka. mailto:(´・ω・`)ショボーン [2008/03/18(火) 23:01:53 ] Do Until objTS3.AtEndOfStream strLine3 = objTS3.ReadLine ArrayStars = Split(strLine3) strRank = ArrayStars(0) strMark = ArrayStars(1) objDicStars.Add strRank,strMark Loop objTS3.Close '名前のリストを取得してから辞書を操作する ArrayRanksList = objDicStars.Keys ArrayStarsList = objDicStars.Items ArrayKeysList = objDic.Keys ArrayItemsList3 = objDic3.Items ArrayItemsList11 = objDic11.Items ArrayItemsList12 = objDic12.Items 'MsgBox ArrayKeysList(0) 'MsgBox ArrayItemsList3(0) 'MsgBox ArrayItemsList11(0) 'MsgBox ArrayItemsList12(0) 'MsgBox ArrayRanksList(0) 'MsgBox ArrayStarsList(0)
56 名前:今日も雲弧 ◆bKaGbR8Ka. mailto:(´・ω・`)ショボーン [2008/03/18(火) 23:02:51 ] For i = 0 To objDic.Count - 1 If CSng(ArrayItemsList3(i)) >= UpTo_Soutou Then strOldRank = ArrayItemsList11(i) strOldMark = ArrayItemsList12(i) objDic11.Item(strOldRank) = ArrayRanksList(0) objDic12.Item(strOldMark) = ArrayStarsList(0) MsgBox "昇進しました" MsgBox ArrayRanksList(0) MsgBox ArrayStarsList(0) MsgBox objDic11.Item(ArrayItemsList11(i)) MsgBox objDic12.Item(ArrayItemsList12(i)) Else MsgBox "あ" End If Next
57 名前:今日も雲弧 ◆bKaGbR8Ka. mailto:(´・ω・`)ショボーン [2008/03/18(火) 23:03:50 ] strRank = "" strRank = objDic11.Items For m = 0 To objDic.Count - 1 strTemp = strTemp & strRank(m) &vbcr Next MsgBox strTemp MsgBox objDic11.Item("今日も雲弧") MsgBox objDic12.Item("今日も雲弧") End Sub
58 名前:今日も雲弧 ◆bKaGbR8Ka. mailto:(´・ω・`)ショボーン [2008/03/18(火) 23:05:10 ] >>54 申し訳ありません。必要最小限の部分すらわからないのです…。
59 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 17:57:26 ] >58 ものには限度があるだろうよ。 あのコードを見て、本質ではないと思われる行が一行も思い当たらない程度のレベルなら、 何をどこから説明して良いのやら見当も付かないよ。
60 名前:デフォルトの名無しさん [2008/03/20(木) 01:34:51 ] すいません。質問です。 Windows xpのマシンにVB6はインストールできますか?
61 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 01:44:20 ] Linuxマシンならインスコできます。
62 名前:14 mailto:sage [2008/03/20(木) 03:42:03 ] >>48 いえいえ、 オブジェクト型の変数ってオブジェクトのインスタンスへの参照ですよ。 その話題くどいです。 >>60 できます。 で、本題は>>47 の後半なんですけど 返事ないところを見るとオブジェクト型のインスタンス化とは違って 組み込み型には明確な名称ないのかな。
63 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 10:26:34 ] >>62 質問の仕方からいって明らかに分かってないだろw なにがくどいだよ。 っていうか君がいう「本題」からして全然わかってないじゃん。 変数そのものが占有するメモリに関して組み込み型とオブジェクト型の区別 なんてあるかよ。 「本題」について言えば、「VBプログラマの視点での呼称」なのか「VBコンパイラ作者の視点での呼称」 なのかをまずはっきりする必要があるだろう。 「インスタンス化」とはVBプログラマ視点の言い方のような気がするから、 これに対応する言い方ということなら「定義」じゃないの? コンパイラ製作者の視点で「変数定義」の実装法の呼び方についていってるのなら それはVB作ったMSの人にしかわからんのじゃないの。 それに変数のスコープによっても実装法は恐らく異なると思うけど
64 名前:60 [2008/03/20(木) 11:26:51 ] >>62 ありがとうございます。 早速インストールしてみます。
65 名前:14 mailto:sage [2008/03/20(木) 14:45:46 ] >>63 変数そのものが占有するメモリに関して組み込み型とオブジェクト型の区別 については どうなんでしょうかね。 少なくともオブジェクト型、というか参照型については 宣言される時ではなく、初回利用時にインスタンス化するみたいですね。 で、組み込み型はどうなのか、というのが今回の話題ですね。 一応オチとしては「初回利用時かもしれない」というオチで落ち着きました。 参照型:インスタンス化 だとして 組み込み型:定義? ですか? なんか変な気が。。
66 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:03:12 ] >>65 やっぱり全然分かってないね。 New付きで定義された変数について、初回利用時まで生成が遅延されるのは インスタンスであって変数そのものではないだろう普通に考えて。 ちなみに「インスタンス化」という言葉が動詞だとして、それがとる目的語は 「クラス」または「型」であって「変数」じゃないと思うんだけど。 言い換えれば別に変数が「インスタンス化」されるわけじゃないぞ。
67 名前:14 mailto:sage [2008/03/20(木) 16:41:10 ] >>66 New付きで定義された変数について、初回利用時まで生成が遅延されるのは インスタンスであって変数そのものではないですよ。 当たり前です。 私がわかってない方が都合いいですか? ならそれでいいです。 わかってません、すみません。 これについてはここで終了してください。 以下を知りたいです。 参照型に対して「インスタンス化」ならば、 組み込み型に対しては何でしょうか? 「定義」という答えを頂きましたが的を得ている気がしません。 他の人の意見聞かせてもらえませんか? やはり定義で正解でしょうか?
68 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 17:03:48 ] あーこいつどうしようもなく頭悪いなあ。。。 だから「参照型のインスタンス化に対応する組み込み型の概念は?」なんてのは そもそも愚問なんだよ。そんなものはないんだから。 参照先が作られることを「インスタンス化」というのだから、 そもそも「参照先」という概念がないVBの組み込み型に対応する概念なんてあるわけないだろう。 そして変数そのもの作られるタイミングは組み込み型だろうが参照型だろうが 変わらないはずだ、と言っているのにこれも全然理解しようとしないなこの馬鹿。
69 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 17:06:30 ] というかVB6以前って「参照型」っていう呼び方したっけ? そういう呼称が導入されたのはドトネト以降で、VBでの呼び方は「オブジェクト型」 だったような気がしたけど。 まあこれに関しては説明の便宜かもしれないし、「参照型」と言った方が 呼び方として適切だと思うからいいんだけど。
70 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:01:39 ] > 参照型に対して「インスタンス化」ならば、 いみがわかりません><
71 名前:14 [2008/03/20(木) 19:14:36 ] >>69 しないと思います。 オブジェクト型で正解。 ご想像の通り説明の便宜です。 >>68 確かにこれは答えないかもしれませんね。 ここまで追求する問題でもないので質問取り下げます。 ありがとうございました。 >>70 言葉足らずですみません。 次の疑問がわきました。 先ほどVBには参照先という概念はないとお聞きしました。 本当ですか? 自分の意見は「ある」です。 Dim cls1 As Class1 Dim cls2 As Class1 Set cls1 = New Class1 cls1.s = "test" Set cls2 = cls1 Debug.Print cls2.s cls2の参照先はcls1のインスタンスです。 だから「ある」に一票。
72 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:50:56 ] > 先ほどVBには参照先という概念はないとお聞きしました。 日本語ダメな人?
73 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:47:37 ] >>71 クラスはドトネトでいう参照型/値型でいったら前者だよ。 だからNothingと比較できるる型の意味を君は理解してるか、と最初から言ってるでしょ。
74 名前:14 [2008/03/20(木) 21:42:53 ] >>73 >クラスはドトネトでいう参照型/値型でいったら前者だよ だーかーら そんな当たり前のこと堂々といちいち書かない。 何が言いたいんですか? それはさておき、 >>71 についてどなたかご意見いただけるとありがたいです。 よろしくお願いします。
75 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 21:45:13 ] VBに参照先の概念が無いなんて誰も言ってないだろ 完全に読み間違えてるよ
76 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 22:08:29 ] >>74 75が指摘してくれてるけど>>68 で「ない」と言っているのは 組み込み型の参照先だよ。 っていうか、君はその「当たり前」のことを全然理解してないのに その自覚がないから馬鹿だっていうんだよ。
77 名前:14 mailto:sage [2008/03/20(木) 23:10:50 ] >>75 なるほど。 参照先が作られることを「インスタンス化」というのだから、 そもそも 「参照先」という概念がないVBの組み込み型 に対応する概念なんてあるわけないだろう。 こう区切ればよかったんですね。 ありがとうございましたー。
78 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 23:35:55 ] vsFlexGridのセルにに画像を表示させるにはどうしたらいいんですか?
79 名前:78 mailto:sage [2008/03/21(金) 00:02:10 ] 自己解決しました
80 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:48:26 ] インスタンス化とは、オブジェクトの実体(インスタンス)を生成するプロセスのことを指す言葉。 これに対応する組み込み型の言葉は無い。しいて言うなら、アロケート(メモリ割付)か。 インスタンス化では、普通、メモリのアロケートとオブジェクトの初期化が行われる。 「オブジェクトの初期化」の中身は、言語によって異なる。 組み込み型の場合によく使われる「定義」という言葉は、「宣言」と対になる言葉。 英語では、definitionとdeclaration。普通は、前者はメモリのアロケートを伴う場合を指し、 後者は文字通り宣言のみを行う場合に使う。C/C++では、両者は明確に区別して語られる。
81 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:51:53 ] 蛇足:的は射るもの
82 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 11:55:16 ] さて、ここでVBのヘルプを見てみると、 >Dim ステートメント >変数を宣言し、メモリ領域を割り当てます。 と記述されている。素直に理解するなら、Dimステートメントが実行されたときにメモリが アロケートされる、すなわち、Dimステートメントとは、変数「定義」だということになる。
83 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 16:00:52 ] >15 がFAなんじゃねーの? それが問題になるようなコードはVBで書くべきじゃないし、 書かなきゃならないならVBを使うのは間違いってことだよ。
84 名前:14 mailto:sage [2008/03/23(日) 10:48:08 ] >>80 求めていた答えをいただけてすごくすっきりしました。 ありがとうございました。
85 名前:22 [2008/03/23(日) 23:47:03 ] >>42 亀レス&言葉足らずですみません。最終的にはVista環境でもシフトJISで書き込みたいのですが 元来内部コードをUnicodeでもっているはずのVBで>>22 のように書いたら シフトJISになるわけが知りたかったので・・・。 >>45 有難うございます、面目ないです。参考になりました。 色々調べた結果ADODB.StreamやFileSystemObjectも使えそうなので 試行錯誤してみます。
86 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 23:57:31 ] どうしても何も、VBが変換書けてるに決まってるでそ。 理由はUNICODEそのままで書いたら文句いう連中が 出るに決まってるから
87 名前:デフォルトの名無しさん [2008/03/24(月) 23:54:10 ] VB6.0を使っています。OSはWindowsXPSP2です。 他人のソースをコピーしてプログラムを作りました。 生成したEXEをエクスプローラで並べて表示にして見て見ると、ファイル名の下に薄い灰色で 作者名らしきものが表示されてしまいます。 プロジェクトのプロパティの「実行可能ファイルの作成」タブで バージョン情報の中にある、コメント、会社名などの情報は全て消したのですが、 EXEを生成し、生成したEXEをエクスプローラで並べて表示にして見た時に、 ファイル名の下に薄い灰色で作者名らしきものが表示されてしまいます。 こういった付加情報を表示しなくするにはどうしたらよいのでしょうか?
88 名前:デフォルトの名無しさん [2008/03/25(火) 14:17:30 ] >>87 「他人のソースをコピーしてプログラムを作りました」 そもそも、これが間違いの始まり
89 名前:デフォルトの名無しさん [2008/03/25(火) 15:20:43 ] >87 なぜかF5では更新されないね。 別のフォルダを選択して元に戻ったら直らないかい?
90 名前:87 [2008/03/25(火) 16:15:21 ] >>89 ご指示通り別のフォルダにexeを一度作成すると消えました。 ありがとうございました。
91 名前:デフォルトの名無しさん [2008/03/26(水) 16:22:26 ] Option Explicit Sub zzz() Dim hoge(3) As Variant Dim hogehoge As Byte Dim z As Byte For z = 1 To 3 For hogehoge = 1 To 3 hoge(z) = Range("A" & hogehoge).Value Next hogehoge Next z End Sub 上のようなコードで、zとhogehogeを同時に インクリメントすることは可能でしょうか?
92 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:52:47 ] 「Next hogehoge」の前に 「z=z+1」を入れれば可能だけど それは構成として間違ってるから やりたいことを日本語で整理して、 それから考えた方がいいと思うよ。
93 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:35:03 ] おk
94 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:15:36 ] zいらんやん
95 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:21:41 ] VB6.0でZipファイルを圧縮する処理をVBSで作成しBatで起動するように したのですが、なぜか1回だけZipと変な拡張子ないデータが作られ 12ファイルの内9ファイルしか圧縮されていませんでした。(原因不明) そこでZipファイルの中身の件数のみを数えて数があっていれば圧縮を 正常に終了したとみなしたいのですが、可能でしょうか? 全て解凍すると時間がかかりますのでお願いいたします。 ちなみにvbsで起動したのはdllを使わないで圧縮ができたからです。 よろしくお願いいたします
96 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 22:29:24 ] 日本語で話してくれないか?
97 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:28:04 ] そのうまくいかない原因を究明するほうがいいと思うぞ。 急がば回れって言うし。 あと、VBSでできるんだったら、VB6でも全く同じようにできる。 せいぜいWScriptオブジェクトがないくらい。
98 名前:95 mailto:sage [2008/03/27(木) 01:30:19 ] >>96 すいません >>97 VBSはネットでフリーであったのでそれを使用しました。ゆえにVBへの記述方法 がまったくわかりません。 (検索はしましたがVB VBSやVB6.0 VBSなど)VBSとVBがかぶっているからか変換の方法が見当たりませんでした。 原因が現在わからないので困っています。今回初めて不具合が出たもので。 >>96 ファイルを圧縮するVBSをbatで動かします。そのbatはVBで作成しています。 作成したbatの起動も同じVBでしています。 batでは以下の記述をしています CD VBSのパス CScript.exe MakeZIP.VBS ZIPファイルのパスと名前 圧縮するtxtのパスと名前1 圧縮するtxtのパスと名前2 … exit ですこれをshellで起動しています。 しかし今回作成されたzipファイルには後ろに記述していた11ファイルの内9ファイルしか 圧縮されておらず。残りの2ファイルはzipファイル内に存在しませんでした。(zipファイルと同じフォルダに拡張子のないファイルが1つ作成されてました) ファイル名が長いわけでも、特殊文字が使われているわけでもありません(パスも同じです) そこで、圧縮が正常にできているかを判断したいと考えました その方法として圧縮したファイル件数を調べることができないかを考えました。 よろしくお願いいたします
99 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 01:35:38 ] >>98 VBSはVBのサブセットなんだから、VBS→VBは 変換なんて考えなくても、そのまま一字一句変えずに使えると思ってもいいくらい。 まずは試してみたか?
100 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 01:38:53 ] コマンドラインの文字長には制限があったような気がするけど?
101 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 12:37:36 ] 1ファイルずつ追加していけば
102 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:21:07 ] VBAのサンプルでも使えばよかろう
103 名前:95 mailto:sage [2008/03/27(木) 22:49:35 ] レスありがとうございます。 >>99 はじめにfunctionを入れてみましたがいまいちどう起動したら よいのかわからずに挫折しました。(標準モジュールに追加?) >>100 まったく同じデータ(パス)で行っています。
104 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:15:08 ] >>103 コマンドラインの文字長制限はそう言う意味じゃないよ >CScript.exe MakeZIP.VBS ZIPファイルのパスと名前 圧縮するtxtのパスと名前1 圧縮するtxtのパスと名前2 … とあるけど、例えば CScript.exe MakeZIP.VBS c:\dirnameA\dirnameB\dirnameC\dirnameD\dirnameE\dirnameF\dirnameG\ZIPFile.zip c:\dirnameA\dirnameB\dirnameC\dirnameD\dirnameE\1.txt c:\dirnameA\dirnameB\dirnameC\dirnameD\dirnameE\2.txt (12.txtまで同じ事を繰り返す) ↑のような長ったらしいパスで使ってるなら途中で途切れて当たり前 CScript.exe MakeZIP.VBS c:\ZIPFile.zip c:\1.txt c:\2.txt (12.txtまで同じ事を繰り返す) にしたら行けるかもしれない。それでも長いから途切れるもしれない 「CScript.exe」の後ろに続く部分が長すぎると途中で切れるってこと よく送るメニューに入れて使うソフトがあるけどあれもたくさんのファイル(例えばWindowsフォルダに存在する全てのファイルとフォルダ)を選んで送るってやると 「指定したデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。」 というエラーが出る。仕様だからこれは回避できない
105 名前:デフォルトの名無しさん [2008/03/28(金) 21:10:22 ] 16進数のカラーコードを赤・緑・青の3要素に分解するにはどうすればいいの? 例えばボタンの表面のデフォルトカラーって「&H8000000F&」だけど、これをRGB に分ける方法ってある? 要はRGB関数の逆をやりたいんだけど。。。
106 名前:95 mailto:sage [2008/03/28(金) 23:56:20 ] >>104 ありがとうございます 今回その症状がまた出たので報告します 今回は9→11→11→11と12個全部をどうしても圧縮してくれませんでした。 104さんが言うように文字が切れているというのでしたら 最後に記述したパス(txt)が含まれないはずです。しかし 含まれていないデータは真ん中に記述されていました。 また作成したバッチを手起動すると12個全てが圧縮されました。 このことからshell関数がおかしな動作をしていると思うのですが 書き方は ret1=shell("CScript.exe MakeZIP.VBS c:\ZIPFile.zip c:\1.txt… ",1) ShellEnd (ret1) で標準モジュールで ttp://hanatyan.sakura.ne.jp/vbhlp/tap_PrgEnd.htm に書いてある文章を private→public に変更して書いています。 変更の仕方がまずかったのでしょうか? VB6.0 SP3 ですよろしくお願いいたします
107 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 23:57:10 ] 小学校の算数だろそんなの。。 VBの場合、どうせ共用体もポインタも使えないんだから演算で求める方法を考えてみ。 まず十進数で考えてみてみ。 君は6ケタの数字の上位2ケタを取り出す方法がわからんの? 10,000で割った商を求めるだけだろ。 Hexだって同じことじゃん。
108 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:00:00 ] >>105 っていうかこれRGBの値じゃないだろう>「&H8000000F&」
109 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 01:14:20 ] >>105 RGBの分解方法はヘルプに載ってる。 &H8000000F&はシステムカラーの番号であって、RGB値ではない。
110 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 03:08:18 ] >>106 エラーが出てんじゃないの? WScript.exeで実行してみ ていうかなんでCScript.exeなの?
111 名前:95 mailto:sage [2008/03/29(土) 07:43:58 ] >>109 MakeZIP.VBS の初めにそのような記述があったのでそのまま使用しています。 ありがとうございます。変更してやってみます
112 名前:デフォルトの名無しさん [2008/03/29(土) 09:50:53 ] >>109 レスありがとうございます。 確かにRGB値だったら16進6桁だと思っていたのでおかしいなとは思っていたのです。 ただ薄い水色(&H00FFFFC0&)だとRを192(=C0)、GとBを255(=FF)としてRGB関数を 呼び出すとちゃんと薄い水色になるので対応しているように思えたのです。 とりあえずWEBでシステムカラー値とRGB値の対応表を探してみますね。。。(-_-)
113 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:10:48 ] システムカラーは固定色じゃないが
114 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:54:20 ] つ ttp://msdn.microsoft.com/library/ja/jpsysinf/html/_win32_getsyscolor.asp
115 名前:112 [2008/03/29(土) 21:36:43 ] >>114 これです!まさにこれ! ありがとうございます。マジで助かりました!。・゚・(ノД`)・゚・。
116 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 11:06:40 ] >>105 Red = RGB値 And &h0000FF Green = ( RGB値 And &h00FF00 ) \ 256 Blue = ( RGB値 And &hFF0000 ) \ 65536 だった気がする
117 名前:デフォルトの名無しさん [2008/04/02(水) 21:21:58 ] VB6でのコードの書き方で質問があります。 If hoge = 1 then i = i+1 End if というふうに複数行で書くのと、 If hoge = 1 then:i=i+1 というふうに1行で書くのとでは多少でも処理の速度は変わりますか?
118 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 21:28:33 ] そりゃあインタプリタの時代だったらかわったけどさ EXEで同じコードが吐かれれば速度は同じさ
119 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 21:31:09 ] >>117 最適化で同じ処理になると思います。 間違ってたら他の人指摘お願いします。
120 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 21:53:38 ] >>118 ,119 なるほどコンパイルすると結果は同じなのですか、 ありがとうございました。
121 名前:デフォルトの名無しさん [2008/04/03(木) 20:42:26 ] WinXP,Vistaではウィンドウのタイトルに 「abcdefg」のように表示されている物が なぜか2000環境で実行すると 「ABCDE~~」のように化けてしまいます。 なぜでしょうか? 実行ファイルの横にランタイムも配置しているので 環境でおかしくなるとは思ってなかったんですが。
122 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:57:09 ] >実行ファイルの横にランタイムも配置している ? Sidebyside COMのこと?
123 名前:121 mailto:sage [2008/04/03(木) 21:23:24 ] >>122 表現が悪かったです。 実行ファイルの配置してある階層に msvbvm60.dllや、VB6JP.DLLなど、 VB6ランタイムを一通り置いています。 こうすることでランタイムをシステムから読み込ませないようにするためです。
124 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:23:37 ] >>121 VBランタイムの言語DLL(VB6JP.dllだったかな)は 「読み込まれた」MSVBVM60.dllと同じフォルダにないといけない。 システムフォルダのが読まれてるんじゃない?
125 名前:デフォルトの名無しさん [2008/04/03(木) 21:23:44 ] ブラウザのリンクをドラッグして処理を行いたいんですけど、 OLEDragDropイベントでDataの中を見てみると 「データの形式が一致しません」エラーが発生します。 リンク先の情報をVBで取得するにはどうすればいいのでしょうか?
126 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:34:21 ] >>125 もしかしてfiles見てる? リンクはテキストだぞ。GetFormatとGetDataしてみ。
127 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:42:16 ] >>123 っていうかどう見ても馬鹿で不勉強なんだからベタにディストリビューションウィザード使えよ。 エンジンの仕組みを理解してもいない、するつもりもない奴が「俺様チューニング」 ぶっこいて動きませんって馬鹿も休み休み言えよ。
128 名前:121 mailto:sage [2008/04/03(木) 21:54:57 ] >>127 「ディストリビューションウィザード」って実行環境に作ったソフトを インストールできる環境で利用可能なものですよね? ネットワークフォルダから実行するため今回は利用していません。 もしかして勘違いしていますか?
129 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:08:01 ] >>128 煽り合いもいいが、先にやることあるだろw
130 名前:121 mailto:sage [2008/04/03(木) 22:14:37 ] >>129 いや、もし他に方法あるんなら純粋に知りたかったので伺いました。 悪意なんてないです。 >>124 そういう意味ではmsvbvm60.dllも実行ファイルと同じ階層に配置してるので 大丈夫、、、と思ってるのですが。 でも文字がおかしくなるのでシステムから読まれているとも考えられますね。 だとしたらなんでなんでしょうか。
131 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:18:25 ] >>128 勘違いしてるのはお前さんだろアホか
132 名前:121 mailto:sage [2008/04/03(木) 22:20:15 ] >>131 そうなんですか? 勘違いを指摘してもらえるとスキルあがりますので それはそれでありがたいのですけど。。
133 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 22:33:52 ] >>130 ちなみに両方とも俺(124=129)だがw Windowsは基本的に同じDLLは2度と読まない。(無駄だから) なので、先に読まれてるDLLがあればそれを再利用する。 (たとえアプリと同じフォルダに同じDLLがあってもだ) さらに、Win2000は確か読み込むDLLの優先度をアプリと同じフォルダか システムフォルダかを選択出来る設定があったはず。 それらをお前さんがそれらを把握してないならそれが理由な可能性が高い。 把握してるなら先にMSVBVM60.dllを使うアプリが起動してるからだろう。 あとね、煽り合いする暇があるなら俺の助言をちゃんと考えろよな。 直接的な答えが出せないからあーいう受け答えになってんだろうけども、 煽りもある意味助言だぜ?
134 名前:121 mailto:sage [2008/04/03(木) 23:24:03 ] >>133 すみません、 実は単純に>>128 の時点で>>124 を見落としてたんですよね。。 なるほど。 >Windowsは基本的に同じDLLは2度と読まない。 これは知ってました。 >なので、先に読まれてるDLLがあればそれを再利用する。 これも知ってました、が、 今回の件と脳内でリンクしていませんでした。 ということで当然>>121 の動作は予想できるあり得る動作ですね。 対処方法はOSの設定変更、もしくはインストーラー等で システムにDLLを組み込むことですね。 納得しました、ありがとうございます。
135 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 00:13:50 ] >>133 その性質はKnownDllsに限られるはず。
136 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 12:47:35 ] VBで作られたもので有名なのって なんかありますか(^^)
137 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 13:14:19 ] >>136 pc11.2ch.net/test/read.cgi/tech/1134464762/
138 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:08:57 ] 板違いでしたらご容赦を。 homepage1.nifty.com/taka_homepage/download.htm にある#1 -End Of Destiny- をしていたところ、今日になって「実行時エラー'5':プロシージャの呼び出し、または引数が不正です。」 と出て起動できなくなってしまいました。 検索をかけてみるとsupport.microsoft.com/kb/811469/ja がでてきたので 互換モードにしてみたのですが解決せず。新しく落としなおしても、保存したフォルダの 置き場所を変えても効果なしでした。 VB製ソフトの現象のようなのでここで質問させていただきました。よろしくです。
139 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:30:19 ] >>137 ありがとう。 最近からVB始めたんで色々コードを見てみたいんです。
140 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 08:11:15 ] >>138 最小化してプログラムを終了すると次回起動したときに 実行時エラーになるね。 たぶん単純なプログラムミスだと思う。 作者にメールしてみるといいよ。
141 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:38:15 ] >>140 レスどうもです。 自分でできる解決策というのは何かないのでしょうか? 作者は恐らく新作とかで忙しいでしょうし、試しに2作目もやってみたところ同じエラーが出たので 修正も煩雑になりそうですし。 最小化して終了した記憶はないのですが、ウィザードリィ風ゲームなので強制終了は 何度もさせました。
142 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 22:49:07 ] >>141 レジストリから画面サイズや座標なんかの読み込みで落ちてるとか? 消すか標準値に書き直せばいけそうな気がする