VBプログラマ質問スレ(6.0以前) Part54
本スレage
VBでおすすめの本は?
6 :
デフォルトの名無しさん :2008/03/08(土) 15:11:26
>>5 VB6なら「ピーターノートンの手解きVisual Basic6」
Vol1とVol2の2巻あるが、初心者でも無理なく理解できる丁寧な解説と、
上級者でも満足できる高度な内容を両立させている上に他のVB本には
記載されていない事も説明がある。サンプルCDも付いているし、この2冊で
充分VBマスターになれる。
7 :
デフォルトの名無しさん :2008/03/08(土) 16:01:17
>>5 ゲームとか作るんだったら
古い本だけど
Visual Basicビジュアルプログラミング実践テクニック
結構お勧めできるかも
大昔にゲーム系の専門でPGの講師してたときに使ってた本
ビジネスアプリだったらぜんぜん意味無いが
すいませんが質問させてください FTP接続に関する質問です。 FTPでデータを転送したく、いろいろ調べた結果、転送まではできるようになりました しかし、以下のことができません。 Aのデータを送って、正常に送れたのを確認してからBのデータを送る 問題点 データ量が大きくなる(転送データが増える)と回線の状況による速度の影響で 一定時間で見るのは難しいです(効率も悪い) たぶんAのデータがすべて送りきれているか確認できればいいと思うのですが可能ですか? ほかにいい方法があれば教えてくれれば嬉しいです。よろしくお願いいたします。
>>9 つか、シーケンシャルに処理すれば良い希ガス
>>9 よくわからないけど
Aのデータを送信
↓
FTPで最新リストを取得して送信元データとサイズを比較 → 違うなら再送信
↓
同じなら成功したとする
とかはできないの?
zipファイルの圧縮はどうすれば可能でしょうか? .netは見つかったのですが6.0では見つかりません。 ちなみに普通に解凍は見つかりました。 UNZIP32.DLL ですが、やはり使用しないと無理なのでしょうか? どうかその方法を教えてください。(txtをまとめて圧縮さえできればいいです) よろしくお願いいたします
>>12 UNZIP32.DLLは解凍で
圧縮はZIP32.DELLだったような。
VB6は標準でZIP圧縮、解凍というメソッド等は持たないので
ZIP32.dllあたりからメソッド呼び出す必要があったはず。
14 :
デフォルトの名無しさん :2008/03/13(木) 21:00:23
質問です。 1: Public Sub test 2: dim x as integer 3: x=0 4: End Sub 変数xのメモリが実際に確保されるのは 2行目でしょうか? 3行目でしょうか?
気にしなくていい
17 :
12 :2008/03/15(土) 00:09:31
>>13 ,16
ありがとうございます
がんばってみます
コピペ君って馬鹿だな、まで読んだ。
「馬鹿は、人を馬鹿呼ばわりする」まで読んだ。
かわいそうだから全部読んだ
22 :
デフォルトの名無しさん :2008/03/16(日) 15:35:22
文字コードで質問があるのですが VBの内部コードはUnicodeということですが buf = "1,2,3,4" Open strPath For Output As #FileNo Print #FileNo, buf Close #FileNo で書き込んだファイルがシフトJISになるのはなぜでしょうか?
仕様です
24 :
デフォルトの名無しさん :2008/03/16(日) 17:31:57
>>23 レス有難うございます。これはVB6の仕様ということでしょうか。
Windows Vistaでは文字コードの規定値がUnicodeになるようですが
VB6で
>>22 のようなコードで作成したファイルは
やはりシフトJISになるのでしょうか?
そのコードではそうなる
26 :
22 :2008/03/16(日) 18:00:30
>>25 ということはシフトJISになるのはPrintステートメントの仕様ということでしょうか。
たしかにStrConvでUnicodeに変換した文字列を書き込んでもシフトJISになりますね・・
Writeステートメントでも同様のようです。
>>26 バイナリで作って書き込めばUNICODEで保存できたはずだが?
シフトJISで出力される仕様だなんて聞いた事もないので 試しにAppLocaleで切り替えてみたらやはりシフトJIS以外で出力された UTF-8には切り替えられないので意味無いが
29 :
22 :2008/03/16(日) 22:19:53
>>27 Open strPath For Binary Access Write As #FileNo
Put #FileNo, , buf
Close #FileNo
でもUnicodeにならないのですがこれって端末の環境が関係してるんでしょうか?
バイト配列でも同じでした。
>>28 要はVista端末で実行しようがシフトJISで出力したいということなのですが
>>22 のコードは修正する必要があるでしょうか?
>>29 Dim strPath As String
Dim buf As String
Dim buf2() As Byte
Dim fileno As Integer
fileno = 1
buf = "1234"
buf2 = StrConv(buf, vbUnicode)
buf3 = buf
strPath = "C:/test.txt"
Open strPath For Output As #fileno
Print #fileno, buf2;
Close #fileno
かなり適当に書いたが、こんなもんじゃないのか?
FFFEは省いてるが
31 :
デフォルトの名無しさん :2008/03/16(日) 23:38:59
質問者も回答者もぐぐらないカスばかりだな
32 :
14 :2008/03/16(日) 23:46:19
どのタイミングで実際にメモリが確保されるかとか保証してるのかな? 遅延可能なら遅延しそう。 でも、動作が変わるような遅延はしないと思う。
マジレスすれば、1行目。
35 :
14 :2008/03/17(月) 00:31:19
>>33 >>34 個人的には
>>34 さんの意見と同じです。
参考書によるとVB6ではAs Newキーワードで宣言されたオブジェクト変数の
生成されるタイミングは宣言された行ではなく、
実際にそれが使用された時まで遅延されるらしいです。
>>14 の例でいうと2行目がIntegerではなく
クラスの場合、3行目でメモリが確保され、Inisializeイベントが呼ばれるのですが、
これってオブジェクト変数の場合だけメモリの確保のタイミングが遅延されるのって
変ですよね。
そう考えたら
>>33 さんの言うように遅延しているのかもしれません。
ちょっと話はそれますが、
Dim i As Integer
If True Then
Dim x As Integer
x = 100
End If
MsgBox CStr(x)
これで「100」と表示されたのでいろんな意味上の方にまとめて
宣言した方が可読性あがるしよさげですね。
賛否両論あるかもしれませんが。
オブジェクト変数だけ遅延されるのは十分ありえることだと思うけど? ありえることとそうであることは違うけどね。
37 :
デフォルトの名無しさん :2008/03/17(月) 02:26:07
変数とインスタンスの区別ができないバカw
38 :
22 :2008/03/17(月) 02:43:19
39 :
14 :2008/03/17(月) 03:10:30
>>36 ありえること、ですか。
確かにそう言われるとそうかもしれませんね。
VBのクラスの実装はなんか他のと比べて
特殊なところありますし。
わかりました。
ありがとうございます。
>>37 変数がインスタンス化するタイミングについて討論してるのに。
>>39 37じゃないけど、Nothingと比較ができる型の意味分かってないんじゃないの?
いずれにせよ(インスタンス生成の遅延以外は)くだらない議論だよ。
シュレディンガーの猫は最終的に猫の生死を確認する方法があるから意味があるのであって、
それが事実上ないVBでのそんな議論に何の意味があるw
>>39 組み込み型では、インスタンス化とは言いません。
22のコードは日本語環境だとShift_JISで出力され、 22はShift_JISで出力したいと言っている。 一体どこに問題がある?
変数宣言してないとき(必須にしてる時)に、デバッグモードで先頭行に カーソルはあると思うが・・・
プロセスにアタッチして、ディスアセンブルすればわかるかもよ
>>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 :2008/03/18(火) 01:15:40
>>40 Nothingと比較ができる型ってつまり
値型と参照型の話ですよね?
大丈夫と思います。
>>41 そうなんですか、知りませんでした。
ありがとうございます。
値型の変数を保存するために実際にメモリ上に領域が確保されることをなんと言うのでしょうか?
オブジェクト型の変数にオブジェクトのインスタンスが格納されると思っているなら間違いだよ
>>46 お前はVB6以前のスレで何を馬鹿なこと言ってるんだ
>>49 >>46 は、FileSystemObject ぐらい使えとでも言い鯛のでは?
FileSystemObjectでUNICODEを保存するソース ↓
VBSで質問があります。よろしくお願いします。(ペコ IF文の部分でobjDic11とobjDic12のItemを書き換えました。 IF文の部分では書き換わっているのに、ループを抜けた後に 再度objDic11を参照すると書き換え前の状態なのです。 どこが悪いのでしょうか?何故こうなるのでしょうか? お教え下さい。 以下にコードを4分割して貼ります。
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")
必要最小限のソース貼れよ・・・
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)
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
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
>>54 申し訳ありません。必要最小限の部分すらわからないのです…。
>58 ものには限度があるだろうよ。 あのコードを見て、本質ではないと思われる行が一行も思い当たらない程度のレベルなら、 何をどこから説明して良いのやら見当も付かないよ。
60 :
デフォルトの名無しさん :2008/03/20(木) 01:34:51
すいません。質問です。 Windows xpのマシンにVB6はインストールできますか?
Linuxマシンならインスコできます。
62 :
14 :2008/03/20(木) 03:42:03
>>48 いえいえ、
オブジェクト型の変数ってオブジェクトのインスタンスへの参照ですよ。
その話題くどいです。
>>60 できます。
で、本題は
>>47 の後半なんですけど
返事ないところを見るとオブジェクト型のインスタンス化とは違って
組み込み型には明確な名称ないのかな。
>>62 質問の仕方からいって明らかに分かってないだろw
なにがくどいだよ。
っていうか君がいう「本題」からして全然わかってないじゃん。
変数そのものが占有するメモリに関して組み込み型とオブジェクト型の区別
なんてあるかよ。
「本題」について言えば、「VBプログラマの視点での呼称」なのか「VBコンパイラ作者の視点での呼称」
なのかをまずはっきりする必要があるだろう。
「インスタンス化」とはVBプログラマ視点の言い方のような気がするから、
これに対応する言い方ということなら「定義」じゃないの?
コンパイラ製作者の視点で「変数定義」の実装法の呼び方についていってるのなら
それはVB作ったMSの人にしかわからんのじゃないの。
それに変数のスコープによっても実装法は恐らく異なると思うけど
64 :
60 :2008/03/20(木) 11:26:51
>>62 ありがとうございます。
早速インストールしてみます。
65 :
14 :2008/03/20(木) 14:45:46
>>63 変数そのものが占有するメモリに関して組み込み型とオブジェクト型の区別
については
どうなんでしょうかね。
少なくともオブジェクト型、というか参照型については
宣言される時ではなく、初回利用時にインスタンス化するみたいですね。
で、組み込み型はどうなのか、というのが今回の話題ですね。
一応オチとしては「初回利用時かもしれない」というオチで落ち着きました。
参照型:インスタンス化
だとして
組み込み型:定義?
ですか?
なんか変な気が。。
>>65 やっぱり全然分かってないね。
New付きで定義された変数について、初回利用時まで生成が遅延されるのは
インスタンスであって変数そのものではないだろう普通に考えて。
ちなみに「インスタンス化」という言葉が動詞だとして、それがとる目的語は
「クラス」または「型」であって「変数」じゃないと思うんだけど。
言い換えれば別に変数が「インスタンス化」されるわけじゃないぞ。
67 :
14 :2008/03/20(木) 16:41:10
>>66 New付きで定義された変数について、初回利用時まで生成が遅延されるのは
インスタンスであって変数そのものではないですよ。
当たり前です。
私がわかってない方が都合いいですか?
ならそれでいいです。
わかってません、すみません。
これについてはここで終了してください。
以下を知りたいです。
参照型に対して「インスタンス化」ならば、
組み込み型に対しては何でしょうか?
「定義」という答えを頂きましたが的を得ている気がしません。
他の人の意見聞かせてもらえませんか?
やはり定義で正解でしょうか?
あーこいつどうしようもなく頭悪いなあ。。。 だから「参照型のインスタンス化に対応する組み込み型の概念は?」なんてのは そもそも愚問なんだよ。そんなものはないんだから。 参照先が作られることを「インスタンス化」というのだから、 そもそも「参照先」という概念がないVBの組み込み型に対応する概念なんてあるわけないだろう。 そして変数そのもの作られるタイミングは組み込み型だろうが参照型だろうが 変わらないはずだ、と言っているのにこれも全然理解しようとしないなこの馬鹿。
というかVB6以前って「参照型」っていう呼び方したっけ? そういう呼称が導入されたのはドトネト以降で、VBでの呼び方は「オブジェクト型」 だったような気がしたけど。 まあこれに関しては説明の便宜かもしれないし、「参照型」と言った方が 呼び方として適切だと思うからいいんだけど。
> 参照型に対して「インスタンス化」ならば、 いみがわかりません><
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のインスタンスです。
だから「ある」に一票。
> 先ほどVBには参照先という概念はないとお聞きしました。 日本語ダメな人?
>>71 クラスはドトネトでいう参照型/値型でいったら前者だよ。
だからNothingと比較できるる型の意味を君は理解してるか、と最初から言ってるでしょ。
74 :
14 :2008/03/20(木) 21:42:53
>>73 >クラスはドトネトでいう参照型/値型でいったら前者だよ
だーかーら
そんな当たり前のこと堂々といちいち書かない。
何が言いたいんですか?
それはさておき、
>>71 についてどなたかご意見いただけるとありがたいです。
よろしくお願いします。
VBに参照先の概念が無いなんて誰も言ってないだろ 完全に読み間違えてるよ
>>74 75が指摘してくれてるけど
>>68 で「ない」と言っているのは
組み込み型の参照先だよ。
っていうか、君はその「当たり前」のことを全然理解してないのに
その自覚がないから馬鹿だっていうんだよ。
77 :
14 :2008/03/20(木) 23:10:50
>>75 なるほど。
参照先が作られることを「インスタンス化」というのだから、 そもそも
「参照先」という概念がないVBの組み込み型
に対応する概念なんてあるわけないだろう。
こう区切ればよかったんですね。
ありがとうございましたー。
vsFlexGridのセルにに画像を表示させるにはどうしたらいいんですか?
79 :
78 :2008/03/21(金) 00:02:10
自己解決しました
インスタンス化とは、オブジェクトの実体(インスタンス)を生成するプロセスのことを指す言葉。 これに対応する組み込み型の言葉は無い。しいて言うなら、アロケート(メモリ割付)か。 インスタンス化では、普通、メモリのアロケートとオブジェクトの初期化が行われる。 「オブジェクトの初期化」の中身は、言語によって異なる。 組み込み型の場合によく使われる「定義」という言葉は、「宣言」と対になる言葉。 英語では、definitionとdeclaration。普通は、前者はメモリのアロケートを伴う場合を指し、 後者は文字通り宣言のみを行う場合に使う。C/C++では、両者は明確に区別して語られる。
蛇足:的は射るもの
さて、ここでVBのヘルプを見てみると、 >Dim ステートメント >変数を宣言し、メモリ領域を割り当てます。 と記述されている。素直に理解するなら、Dimステートメントが実行されたときにメモリが アロケートされる、すなわち、Dimステートメントとは、変数「定義」だということになる。
>15 がFAなんじゃねーの? それが問題になるようなコードはVBで書くべきじゃないし、 書かなきゃならないならVBを使うのは間違いってことだよ。
84 :
14 :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も使えそうなので
試行錯誤してみます。
どうしても何も、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を同時に インクリメントすることは可能でしょうか?
「Next hogehoge」の前に 「z=z+1」を入れれば可能だけど それは構成として間違ってるから やりたいことを日本語で整理して、 それから考えた方がいいと思うよ。
おk
zいらんやん
VB6.0でZipファイルを圧縮する処理をVBSで作成しBatで起動するように したのですが、なぜか1回だけZipと変な拡張子ないデータが作られ 12ファイルの内9ファイルしか圧縮されていませんでした。(原因不明) そこでZipファイルの中身の件数のみを数えて数があっていれば圧縮を 正常に終了したとみなしたいのですが、可能でしょうか? 全て解凍すると時間がかかりますのでお願いいたします。 ちなみにvbsで起動したのはdllを使わないで圧縮ができたからです。 よろしくお願いいたします
日本語で話してくれないか?
そのうまくいかない原因を究明するほうがいいと思うぞ。 急がば回れって言うし。 あと、VBSでできるんだったら、VB6でも全く同じようにできる。 せいぜいWScriptオブジェクトがないくらい。
98 :
95 :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つ作成されてました)
ファイル名が長いわけでも、特殊文字が使われているわけでもありません(パスも同じです)
そこで、圧縮が正常にできているかを判断したいと考えました
その方法として圧縮したファイル件数を調べることができないかを考えました。
よろしくお願いいたします
>>98 VBSはVBのサブセットなんだから、VBS→VBは
変換なんて考えなくても、そのまま一字一句変えずに使えると思ってもいいくらい。
まずは試してみたか?
コマンドラインの文字長には制限があったような気がするけど?
1ファイルずつ追加していけば
VBAのサンプルでも使えばよかろう
103 :
95 :2008/03/27(木) 22:49:35
レスありがとうございます。
>>99 はじめにfunctionを入れてみましたがいまいちどう起動したら
よいのかわからずに挫折しました。(標準モジュールに追加?)
>>100 まったく同じデータ(パス)で行っています。
>>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 :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 ですよろしくお願いいたします
小学校の算数だろそんなの。。 VBの場合、どうせ共用体もポインタも使えないんだから演算で求める方法を考えてみ。 まず十進数で考えてみてみ。 君は6ケタの数字の上位2ケタを取り出す方法がわからんの? 10,000で割った商を求めるだけだろ。 Hexだって同じことじゃん。
>>105 っていうかこれRGBの値じゃないだろう>「&H8000000F&」
>>105 RGBの分解方法はヘルプに載ってる。
&H8000000F&はシステムカラーの番号であって、RGB値ではない。
>>106 エラーが出てんじゃないの?
WScript.exeで実行してみ
ていうかなんでCScript.exeなの?
111 :
95 :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値の対応表を探してみますね。。。(-_-)
システムカラーは固定色じゃないが
115 :
112 :2008/03/29(土) 21:36:43
>>114 これです!まさにこれ!
ありがとうございます。マジで助かりました!。・゚・(ノД`)・゚・。
>>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行で書くのとでは多少でも処理の速度は変わりますか?
そりゃあインタプリタの時代だったらかわったけどさ EXEで同じコードが吐かれれば速度は同じさ
>>117 最適化で同じ処理になると思います。
間違ってたら他の人指摘お願いします。
>>118 ,119
なるほどコンパイルすると結果は同じなのですか、
ありがとうございました。
121 :
デフォルトの名無しさん :2008/04/03(木) 20:42:26
WinXP,Vistaではウィンドウのタイトルに 「abcdefg」のように表示されている物が なぜか2000環境で実行すると 「ABCDE~~」のように化けてしまいます。 なぜでしょうか? 実行ファイルの横にランタイムも配置しているので 環境でおかしくなるとは思ってなかったんですが。
>実行ファイルの横にランタイムも配置している ? Sidebyside COMのこと?
123 :
121 :2008/04/03(木) 21:23:24
>>122 表現が悪かったです。
実行ファイルの配置してある階層に
msvbvm60.dllや、VB6JP.DLLなど、
VB6ランタイムを一通り置いています。
こうすることでランタイムをシステムから読み込ませないようにするためです。
>>121 VBランタイムの言語DLL(VB6JP.dllだったかな)は
「読み込まれた」MSVBVM60.dllと同じフォルダにないといけない。
システムフォルダのが読まれてるんじゃない?
125 :
デフォルトの名無しさん :2008/04/03(木) 21:23:44
ブラウザのリンクをドラッグして処理を行いたいんですけど、 OLEDragDropイベントでDataの中を見てみると 「データの形式が一致しません」エラーが発生します。 リンク先の情報をVBで取得するにはどうすればいいのでしょうか?
>>125 もしかしてfiles見てる?
リンクはテキストだぞ。GetFormatとGetDataしてみ。
>>123 っていうかどう見ても馬鹿で不勉強なんだからベタにディストリビューションウィザード使えよ。
エンジンの仕組みを理解してもいない、するつもりもない奴が「俺様チューニング」
ぶっこいて動きませんって馬鹿も休み休み言えよ。
128 :
121 :2008/04/03(木) 21:54:57
>>127 「ディストリビューションウィザード」って実行環境に作ったソフトを
インストールできる環境で利用可能なものですよね?
ネットワークフォルダから実行するため今回は利用していません。
もしかして勘違いしていますか?
>>128 煽り合いもいいが、先にやることあるだろw
130 :
121 :2008/04/03(木) 22:14:37
>>129 いや、もし他に方法あるんなら純粋に知りたかったので伺いました。
悪意なんてないです。
>>124 そういう意味ではmsvbvm60.dllも実行ファイルと同じ階層に配置してるので
大丈夫、、、と思ってるのですが。
でも文字がおかしくなるのでシステムから読まれているとも考えられますね。
だとしたらなんでなんでしょうか。
132 :
121 :2008/04/03(木) 22:20:15
>>131 そうなんですか?
勘違いを指摘してもらえるとスキルあがりますので
それはそれでありがたいのですけど。。
>>130 ちなみに両方とも俺(124=129)だがw
Windowsは基本的に同じDLLは2度と読まない。(無駄だから)
なので、先に読まれてるDLLがあればそれを再利用する。
(たとえアプリと同じフォルダに同じDLLがあってもだ)
さらに、Win2000は確か読み込むDLLの優先度をアプリと同じフォルダか
システムフォルダかを選択出来る設定があったはず。
それらをお前さんがそれらを把握してないならそれが理由な可能性が高い。
把握してるなら先にMSVBVM60.dllを使うアプリが起動してるからだろう。
あとね、煽り合いする暇があるなら俺の助言をちゃんと考えろよな。
直接的な答えが出せないからあーいう受け答えになってんだろうけども、
煽りもある意味助言だぜ?
134 :
121 :2008/04/03(木) 23:24:03
>>133 すみません、
実は単純に
>>128 の時点で
>>124 を見落としてたんですよね。。
なるほど。
>Windowsは基本的に同じDLLは2度と読まない。
これは知ってました。
>なので、先に読まれてるDLLがあればそれを再利用する。
これも知ってました、が、
今回の件と脳内でリンクしていませんでした。
ということで当然
>>121 の動作は予想できるあり得る動作ですね。
対処方法はOSの設定変更、もしくはインストーラー等で
システムにDLLを組み込むことですね。
納得しました、ありがとうございます。
>>133 その性質はKnownDllsに限られるはず。
VBで作られたもので有名なのって なんかありますか(^^)
>>137 ありがとう。
最近からVB始めたんで色々コードを見てみたいんです。
>>138 最小化してプログラムを終了すると次回起動したときに
実行時エラーになるね。
たぶん単純なプログラムミスだと思う。
作者にメールしてみるといいよ。
>>140 レスどうもです。
自分でできる解決策というのは何かないのでしょうか?
作者は恐らく新作とかで忙しいでしょうし、試しに2作目もやってみたところ同じエラーが出たので
修正も煩雑になりそうですし。
最小化して終了した記憶はないのですが、ウィザードリィ風ゲームなので強制終了は
何度もさせました。
>>141 レジストリから画面サイズや座標なんかの読み込みで落ちてるとか?
消すか標準値に書き直せばいけそうな気がする
>>142 適当にレジストリを見てると、LeftとTopという項目(画面位置?)が-48000などと
変な数字になってたので一度消してみたところ起動することができました。
どうもありがとうございます。
>>144 これでログとると不要なレジストリとか消せそうですね。
今度何かあった時に使ってみます。ありがとうございます。
>>95 さんと同じような内容なんですが(検索してたらここにきました)、
自分はMakeZIPをVB6に組み込んで使用しています。
しかし、どうしてもZIPファイルの中身を確認する方法が見当たりません。
確認したいことは圧縮されているファイル数です。
ほかにもサイズ、名前などがわかればベストなのですが
どなたか方法を知ってる方はここにはおられませんか?
VB6なら、メジャーなzipを扱えるdll使えよ
シェルで、zipを圧縮フォルダとして使えるようになっている環境なら、それも使える。
正直InfoZipあたりのzip.exe/unzip.exeでも付属させて コマンドライン叩いたほがいいんじゃないかっておもう。
exeキックだと、コールバック使えないじゃん・・・
パイプ経由でコールバックもらえばええやん。
それ、コールバックって言わないし
ListZip.vbs 読め。 と言っても読めるくらいなら来ないよな?
パイプ経由でライトバックもらえばええやん。
俺用語は使わないでね
筒経由で書き戻しもらえばええやん。
マジレスすると、unzip32.dll使え。 VBのコードも付いてる。 商用利用可。
159 :
146 :2008/04/09(水) 22:56:57
皆さんありがとうございます。 ListZip.vbs これでできたのですね。ありがとうございます。 しかし、これをVB6で使用できるようにできません(涙) どこかに標準モジュールないのでしょうか?
アホかおまえは。 普通にDLL使え。
>>117 ついでですがThenの後ろのコロンは要らないです。
>>159 VBSから標準モジュールやクラスモジュールへの移植は
そう難しくないと思います。
なにこいつ
あほちゃいますか?
だーかーらー、DLL使えって!!!
足し算できないやつに積分教えるようなものだ やめとけ
167 :
デフォルトの名無しさん :2008/04/10(木) 12:57:35
VB6でグローバル変数を使わず、すべての関数をカプセル化することは可能でしょうか?
できるよ。Formがグローバルなのに目をつぶればね。
169 :
デフォルトの名無しさん :2008/04/10(木) 15:58:13
複数ののCheckboxを使って、optionbuttonみたいな交互動作てできませんか?
170 :
デフォルトの名無しさん :2008/04/10(木) 18:39:27
アプリを終了してもアプリ自体がタスクに残る不具合が発生しています。 再発条件は不明ですが、不具合発生した環境があれば原因追求をどのようにするのが効率的でしょうか? 御教授のほどよろしくお願いします。
テキストボックスに16進数の文字がある場合 それを変数に数値として代入するにはどうすればいいですか? valやConvert関数では出来ませんでした 例 テキストボックスの文字 = 0x1234 (十進数:4660) -> 数値に変換して変数に代入 -> 4660 (数値変数)
>>170 自分でFormの変数宣言しないで、VBが用意してるForm1とかそのまま使ってるんじゃね?
あれってプロパティにアクセスしたりすると自動的にロードされるから、
たぶん終了直前に何らかのプロパティにアクセスして再ロードされたフォームがある
OnLoadでブレイクでも入れておけば分かるんじゃないかね
もう一つ考えられるのがオブジェクト同士の循環参照だね
なにこれ?
新人みたいなアホな問いばかりじゃないか。
>>169 余裕で出来るけど?
それが何か?
>>170 終了ボタンを押して終了した気になってる系かね。
Unloadイベント中に何か別のFormなり何なり生成してないかい?
>>171 人に聞く前にMSDNくらい一人で見ようぜ。
>>173-174 それが、
0x12345678 のような 4桁以上の16進数だと型オーバーで変換が出来ません
MSDNのヘルプ見てもDouble型までが限界のようです
Long型のような8桁くらいの文字(16進)を数値に変換するのにはどうすればいいのかヘルプ見ながら悩んでます
>>175 どうせそんなレベルならVB6みたいな終わってる開発環境使う意味ないだろw
まあLongの型指定文字を調べてみることだね。
>>175 文字列右から4文字ずつ区切ってvalして、最後にシフトするのはどうですか?
179 :
デフォルトの名無しさん :2008/04/11(金) 00:18:50
>>172 タスクマネージャーでメモリ使用量を確認していると、
各イベント(フォーム起動→終了→以下繰り返し等)を起動するたびに使用メモリが増加していきます。
循環参照の現象でしょうか?
>>179 循環参照って何のことだか理解してる?
>>172 に書いてある
>OnLoadでブレイクでも入れておけば分かるんじゃないかね
を実行してなさそうな文章なんだけどやったの?
プログラム板は当たりがきついな
>>179 >
>>172 > タスクマネージャーでメモリ使用量を確認していると、
> 各イベント(フォーム起動→終了→以下繰り返し等)を起動するたびに使用メモリが増加していきます。
解放してないから
>>181 おしえてぐーなら優しいけどな
あと2ちゃんでも女子中学生にはやさしいよ
184 :
デフォルトの名無しさん :2008/04/11(金) 06:46:11
つ「Unload Me」
Using src As New FileStream(srcName, FileMode.Open, FileAccess.Read) While True readSize = src.Read(buf, 0, BUFSIZE) ' 読み込み If readSize = 0 Then MsgBox("HIT=" & hval) Exit While ' コピー完了 End If End While End Using このコードでファイル操作の処理をすると 読み込み開始から終了までのあいだフォーム全体が操作不能になります 読み込み処理中でもボタン等の操作を可能にするにはどうすればいいでしょうか? 中断ボタンを作ってあるのですが操作不能になって機能しません
上でDLL (OCX)作って、下でそれを使うEXE作るってことは可能だろうね。 そもそもなぜ今更VC++ 2003? 事情がなければ2005でも2008でも使えばいいだろうに。
188 :
デフォルトの名無しさん :2008/04/11(金) 19:00:08
ComboBoxでリストから項目が選択してドロップダウン部分が消えた瞬間に任意のコードを実行したいのですが DropDownClosedやSelectionChangeCommitted その他のそれらしいイベントを設定しても 選択→ドロップダウンが消える→再度選択 としないとそのコードが実行されません どのイベントを設定すればいいでしょうか?
Click
191 :
デフォルトの名無しさん :2008/04/13(日) 10:45:44
SAVEデータのようにバイナリデータとShift_JISの文字列が混在するファイルの 文字列部分を編集して書き戻したいのですが Dim FreeNum as Integer Dim Bin1() as Byte , Bin2() as Byte Dim strRes as String FreeNum=FreeFile Open hoge.bin For Binary As #FreeNum Get #FreeNum, , Bin1 Close #FreeNum strRes = StrConv(Bin1,vbUnicode) '本来ここでstrResを編集する Bin2=StrConv(strRes,vbFromUnicode) とした時にBin2はBin1を再現せず、バイナリデータの部分が変わってしまいます。 通常このような操作を行う場合はどのようにすれば良いのでしょうか? お力を貸して下さい。
>>191 それはShiftJISにしたときのバイト数えて詰め物したりでかなり面倒くさい。
結局Cランタイムのfopen系の関数をラップしたActiveXを作ってそれで読み書きさせた。
リストボックスで選択した場所から下の項目を削除したいのですが 下のプログラムだとindexエラーが出てうまくいきません For i = ListBox1.SelectedIndex To ListBox1.Items.Count - 1 ListBox1.Items.RemoveAt(i) Next どう対処すればいいでしょうか?
後ろから削っていくとか。
デバッグして確認したときそれぞれの値が
ListBox1.SelectedIndex=2
ListBox1.Items.Count=8 (項目数=3)
となっていて
その状態で
>>193 のFOR文を実行すると i の値が2,3,4,5,6,7 とステップして
ListBox1.Items.RemoveAt(i) で最後の項目まで問題なく削除出来ると思うのですが
どういう訳かエラーになります
>>195 修正
× (項目数=3)
○ (項目数=7)
どういう訳かも何も、たとえばRemoveAt(10)を実行した時点で いままでItems(11)だった奴がItems(10)に繰り上がるわけだが
>>197 当たり前のことすら理解出来てない人に
答えを教えてくれてありがとうございます
無事ちゃんと動作するコードに出来ました
1年半後に登場するWindows7にはVB6ランタイムはサポートされますか?
知らんがな(´・ω・`)
VB6でPublicの構造体・変数の宣言可能な数(容量?)ってどの位か解りませんか?
VS2008のVBでラベルの背景を透明化するにはどうすればいいですか? label1.BackColor = Color.Transparent では出来なかったです
204 :
デフォルトの名無しさん :2008/04/15(火) 23:42:02
ループする処理の中にあるIF文をSelect文にしたら処理が倍以上かかるようになったんですが これはどうしようもないことですか?
>>205 条件文がわからんから、「そんなもn」としか答えようが無い。
207 :
デフォルトの名無しさん :2008/04/17(木) 08:12:15
>>205 Selectを使うな。
Excelとのやりとりは速度が遅くなる。
Withを使うか、まとめて配列に代入してから配列を扱え。
>>204 よほどの事が無い限り、まず制限を超える事は無いと思いますが有りました。
(コンパイル時にメモリー不足と出る)
>>208 そりゃ単にメモリ増設すりゃ回避できるんじゃないか?
>>209 2GB以上アロケートできないとかないのかね?
ループ処理中に何かボタンおされたらループから抜けるプログラムを作りたいのですが そのボタンのsubではない 違うSub内で コントロール上のどのボタンが押されたのかを検出する方法ってありますか?
>>211 ループ処理の中でDoEventsと終了フラグのチェックを頻繁にやるしかない。
DoEventsを使うときは再入やら予定外の動作をはじくようにする必要がある。
昔、だれかが作ったソフトのメンテしてたら フォームに貼り付けたコントロールの数がオーバーしてこれ以上追加できない という状況になったときに、泣いたことはあるなw
メンテだと設計方針が間違っていようが、そのまま行かざるを得ないときもあるから辛いな
FileCopyでファイルコピーするとshift-jisで書き出したファイルがUTF-8になってしまうのですが 対象方はありますか?
216 :
デフォルトの名無しさん :2008/04/21(月) 21:51:25
VBからExcelに値を貼り付けてプレビュー表示をする処理にて 処理中は見えないようにするためVisibleをFalseにするのですが、 EXEファイルから起動するとVisibleをFalseにした段階で最背面に表示されてしますいます。 Visual Basicから起動するとプレビュー画面が最前面に表示されるのですが何故でしょう? 使っているコンポーネントはQuickPack、Farpoint SpreadSheet、InputMan Proです。 今まで別な環境で作った際はこんな現象になったことはありません。 同じコンポーネントを使っている方で克服した方はおりますか? ちなみにSetWindowPos等使わないで済ませたいです。 途中ダイアログを表示したりメッセージボックスを表示させたりするので Visual Basicで起動しているときと同じ用途で実現させたいのです。 ちょっと分かりにくいかも知れませんが宜しくお願い致します。
コピペ君って馬鹿だな、まで読んだ。
vb6の評価版使ってて、exeにできないんですが、 vb6.0安く売ってるところないですか?
>>219 だよねぇ。
Visual Basic 2008 Express がタダで手に入るこのご時世に。
ツールバーのアイコンを大きくしてメニュー名をアイコンの下に表示させたいのですが、 どうすればいいのでしょうか?
>>220 それってVB6のOCXの開発ライセンスキーが付いてる?
>>219 なんでVB(6.0以前)スレに居るの?
VB6で立方メートルの単位(m3)のように右上に数字を乗せる方法はないでしょうか? またはキーワードだけでも教えていただけないでしょうか?
>>227 通常はラベルで代用するものなのでしょうか?
ブラウザとかリッチエディットでそういう書式指定って方法も思いつく。 ほかにもUnicodeに対応していればm³や㎥って文字が使える。
brwWebBrowserで取得したものを htmlかテキストにして文字変数に格納する方法ないですか?
>218 現在VB6を新規に入手する方法はMSDNに入るしかない。 >226 上付きの3はISO 8859-1/15の0xB3にあるが…UnicodeでもU+00B3だな。
232 :
230 :2008/04/23(水) 23:29:47
Text1.Text = Inet1.OpenURL(brwWebBrowser.LocationURL) で取得できましたが 文字バケのようになり日本語で表示されません。 フォントは明朝に設定したのですが。
233 :
230 :2008/04/24(木) 00:41:02
RichTextBox1.Text = brwWebBrowser.Document.body.innertext これで一応できましたが 普通のTextBoxは日本語ダメでしたっけ?
Text1.Text = brwWebBrowser.Document.body.innertext
VBのMAPIでメールを操作したいのですが IDやPASSの設定はサンプルにのってるのですが POP3等の設定がのっていません。 Outlookの設定に依存してるのでしょうか? POP3設定のキーワードを教えてください。
236 :
230 :2008/04/24(木) 13:46:15
Text = WebBrowser1.Document.body.innertext これで数百行あるものを読み込むと200行ちょっとまでしかとれてないようですが・・・ 行制限があるんでしょうか?
読み終わってからにしろよ早漏
238 :
230 :2008/04/24(木) 14:33:54
なるほど。
指定ファイル(テキストやCSV)の行数を取得する良い方法はありますか? Dim i As Integer = 0 Dim sr As New System.IO.StreamReader("C:\1.csv", System.Text.Encoding.Default) Do Until sr.Peek() = -1 sr.ReadLine() i+=1 Loop sr.Close() 今のところこの方法しか思い浮かびません もっと簡潔な方法があれば教えて下さい
何を指して良い方法と言っているのだ? 時間?効率?ソースの短さ?exeのバイト数?
コードの短さか そんなクソの役にもたたねえ事にこだわるな!
>>239 とりあえずスレチだと思うのだが。
それ.NETだろ?
まぁ行数取得ならFileSystemObjectだったかTextStreamだったか忘れたが
1行で取得する処理書くこと出来るよ。
ググってみ?
VB6(SP6)です OutBufferCountがしっかり送信バッファの値を返す設定って、何かあるでしょか? MSComm1.Output = txdatbuf$ Text1.Text = Format(MSComm1.OutBufferCount) このよーなコードを書いて、送信開始時のバッファを確認してみても0のままだったりして困っておりまする。 送信そのものは成功しています。 MSComm1 は DTREnable=False EOFEnable=False Handshaking=0 InputMode=0 OutBufferSize=512 RThreshold=1 SThreshold=0 RTSEnabled=False になってオリマす
ログをファイルを出力しているのですが 最新の1000行のみに維持したいのですが 何か良い方法はありますでしょうか?
良い方法? 1000行固定というクソ仕様をやめてしまえ
全部読んで1行捨てて書き出して、最後に今のログ1行書いたら駄目なのか?
WebBrowserコントロールを使って そのWebの書き込みテキストボックスから書き込みする方法ありますかね?
>247 内部バッファならともかく、ファイルでそれはないだろ。
>250 >246
お前の能力では出来ないって事か
↑こんな奴がいるから糞ソフトが無くならんのだよな
↑その糞ソフトすら書く方法を知らないカス
何が問題なのか理解してないようだ 中国人の外注のほうがマシに思える
>>249 お前というやつは・・・。
いきなり上書きしたら、
書き込みの途中でエラーが出たら
ログが壊れるだろ・・・。
>>255 うむ
中国人に「最新の1000行のみに維持したい」って言えば
ちゃんと作ってくれるだろうな
TextStream使えば? ・ReadAll()で全行読み込み(なかなか高速) ・Sprit()で改行文字をKeyに配列化 ・UBound(配列)>=999の場合は、配列にする前の文字列からInStrRevで改行文字探して見つかった位置-1までを取得 ・先頭に新しいログ文字列追加 ・で、書き出し みたいな
>>256 書き込みの途中って?
例えばどんなエラーがある?
>>256 じゃないが
エラーも出ずにファイルごとぶっ壊された経験なら多々あるなあ
ローテートの基準は行数にしないで日付や時間で新規ファイルに割って、
取得や表示時の処理で行数割りにすべきじゃねえの?
1000行程度でエラーになった経験は無いからなあ
壊れる事象が起こる原因が上書きなら、 新規作成→リネームでいい気がするが? 元のFileは消した状態で。
>>260 それはプログラマである質問者でなく、設計したアホに言えよって話にならね?
もしくはそう注文してくる客に。
そういう仕様だって言われりゃマはそう作るしかないんだし
だったら最善の策を考えた方が仕事も早く終わるだろ。
>>259 1. ディスクフル
2. 書き込みするデータを用意する際のエラー
3. メディアの部分的な破損
こんなところか?
ディスクフルは今回の場合関係なさそうじゃね? メディアの破損については今回のファイル書き出し云々関係無い気がする。 書き込みデータ準備のエラーは具体的には何がある?
>>263 だな、激しく同意
反論できる状況でなけりゃ、結局そう作るしかないんだよな
>>266 大体さ、設計について話すってのは、ぶっちゃけスレチな気がするんだよ。
ここはVBプログラマ質問スレだろ?
プログラマからの質問に対して設計に文句言うのはおかしいと思うんだが
間違ってるか?
>>265 メディアが部分的に破損してて書き込み失敗したら、
上書きしてた場合はログが壊れて、
別ファイル作ってた場合は前のログは残る。
[方法その1(昔からある方法)] サイクリックファイルという概念を使う。 詳しくはググれ。 [方法その2] ログを全てオンメモリに持って、時々ファイルにflush。 プログラムが異常終了したときは、ログが失われる可能性がある。
ファイルの書き込みは実際にはセクタ単位で行われるから サイクリックファイルって万が一破損した場合の影響範囲は 1セクタ分になんのかね。
>>267 設計に触れなくていいと言うなら間違っている
与えられた事しかできないのは下郎の仕事だよ
ログファイルの行数制限ってそれ程アホな仕様とは思えないんだが
馬鹿ですね。
フォームが非アクティブな時にクリップボードを監視して 文字があればフォーム上のテキストボックスにすぐ貼り付けるというプログラムを作っているのですが FormのLostFocusで処理させるとクリップボードに文字をコピーしたあと フォームをアクティブにしないとテキストボックスに内容が反映されません どのイベントで処理すればいいでしょうか?
>>275 監視って言いながら1回しか見てないの?
Timer使って一定時間ごとにチェックするとかじゃなく?
1行500byteで、50メガ程のテキストファイルをADOを使ってmdbに突っ込んでるんですが、 テキストファイルの改行コードがlfなんで、LineInputじゃ取れないんで、 一度バイナリで取り込みcrlfに変換後、保存してLineInputってのもスマートじゃないし、 stringで全部読み込み、midって取るのも後半重くなるし〜って事で、詰まってます。 何かいい方法はありませんでしょうか?
>>278 ADOのStreamオブジェクトを使うといいような気がする
>>249 1000行ぐらい内部バッファあけといて毎回読み書きしてもいいとおもたんだが
もしかして一般的には不毛な設計なのか?
無駄にHDDを劣化させることは無いだろ 単純なログにすれば何も問題ないのにCPUの無駄遣いするなよ Vistaを筆頭に、重かったりメモリ食いまくったりするのが流行なのかもしれないがな
バカは黙ってろよ
車や電化製品でも、誰も使わない機能をつけるのがカッコイーんだよ。 自己満足の世界に口を出すなっつーの。
284 :
デフォルトの名無しさん :2008/04/28(月) 16:06:17
知的探求は必要 ソースをいかに短く書くか燃えなかった?
行固定のログファイルとか良くやるけどね これだけ議論になるということは、あまりこういう仕様に直面したこと無いのか?
通信アプリなどのようにリクエストが多かったりするログで1000行固定はクソ仕様かもしれない だが今回は1000行であり1起動で数回くらいの頻度だろ?騒ぐほどの事ではない でも俺もクソ仕様だとおもう
287 :
デフォルトの名無しさん :2008/04/29(火) 11:12:32
VB6なんですが、 製作しているプログラムProgAではOpenでテキストファイル(1行のみ存在) を開いてInputのRead Sharedで1秒毎に読んでは閉じます。参照しかしません。 別のプログラムProgBからそのテキストファイルは 1秒毎に更新されています。内部の仕様はわかりませんがProgBから もしロックをかけて更新しているなら 同時にProgA側で開こうとすればエラーが出ると思います。 それは問題ありません。 ProgAでファイルを参照していてもProgBからそのファイルの更新さえ できていれば、ProgAとしては問題ないのですが、 今の状態では不都合が生じるでしょうか? ProgAでファイルを開いている状態(ブレークポイントでとめて)で 自分で作った外部アプリでファイルに更新をかけてみたのですが、 ファイルは普通に更新されたのですが、これで良いのかどうか。。。
プログレスバーの上にColor.Transparentを設定したラベルをおいて ラベルの親コントロールをプログレスバーに再設定しても どうやらプログレスバーがColor.Transparentをサポートしていないようで ラベルの背景が半透明化されません プログレスバーのようなColor.Transparentをサポートしないコントロール上で 背景を半透明にさせるにはどうすればいいですか?
文字をpadleft等で桁揃えして文字数が同じなのを確認して コンボボックスのフォントをMSPゴシック、MS UIゴシック等の等角フォントにして フォントが変更されたのも確認した後 それらの文字数が同じアイテムをコンボボックスに追加してリスト内のアイテムを確認すると どうやってもズレて表示されてしまいます 解決法ってありますか?
>>289 > コンボボックスのフォントをMSPゴシック、MS UIゴシック等の等角フォントにして
上記は等角フォントではないよ。
MSゴシックを使ったら?
>>290 MSゴシックにしたら改善されました、ありがとうござます
フォントについて勘違いしてたみたいです
プログラミング以前の話に答えていただいて助かりました
Join関数を使わないでMidステートメント(関数ではない)で文字列を連結する場合、MidとMid$ではどちらがいいの? 速度を計っても差がわからない。 どっちも同じなのかな? 関数ならもちろんMid$が少し速いが。
そんな知識もない奴がいまさらVB使ってどうするのかなw っていうか、mid$で文字列連結って意味不明な気がするが。 まあここでも散々既出だと思う(折れ自身複数回回答してるから)けど、 (っていうかググッてもすぐ回答が見つかるはずだとも思うが) $付き: 返り値の型がString $なし: 返り値の型がVariant Variant返す関数の存在理由は良く知らないが、普通は使う必要ないんじゃないのかな。
>>293 Mid$で連結が意味不明なら答えるなよ。
わかる人はすぐ分る。
そもそもオマイは関数と勘違いしてるし。
俺より初心者みたいだなw
>そんな知識もない奴がいまさらVB使ってどうするのかなw すぐこういう事を言い出す輩が多いな。 あとクソ仕様がどうとか。 学生か趣味でしか使わない奴らには一生理解できないんだろうけどね。
>>287 です
簡潔でなかったので、簡潔に書きます。
テキストファイルAをあるアプリAで
OPENステートメントのRead Sharedで開いていた場合
別アプリBでファイルAを開いたり更新したりしようとすると
問題が生じるでしょうか?
誰か
>>294 の言ってる意味がわかる奴いる?w
俺は意味不明なこと言ってるとしか思えないが、
正直VBは年に1度触るか触らないかの状態なので自信もって否定はできない、と一応謙虚に言っておく。
ついでにまあどうでもいいが、「そんな知識もない奴がいまさらVB使ってどうする」
って指摘が不適切とは俺は思えないんだよねやっぱり。
初心者が今更VB使ってどうすんの。
まあそりゃ保守の需要とか学校の講義でたまたま使ってるとかあるのかもしれんが、
今更初心者にVBのコードを保守させる会社とか、今更VB6を使って教える学校ってのは如何なもんなのかねえw
いやいや。「お前が言うな」
mid$で連結って、前スレあたりで話題になったよね
>>297 はMidステートメントは使ったことないんだよきっと。
&演算子で連結することしか知らなかったりしてw
知らなかったのならググればよかったのにw
>>299 語るに落ちてるな。
サンプルコードをロクに理解せずにコピペして使ってるVB厨房の君自身をね。
そのサンプルコードの動作原理をちゃんと理解してる?w
理解してたら決して「Mid$で文字列を連結」などとは言わないよ。
そのコードでMid$が担ってる機能は「文字列の連結」じゃなくて「置換」だと思うけどね
>>303 では、件のURLの<title>がなぜそのようになっているか、説明してもらおうか。
>>303 なぁ、こんな所で戦っても、何も得るものないぞ?
匿名なんだからさ、おとなしく引きさがれよ。
人に突っ込む前になぜ"pseudo-concatenation"と書いてあるか考えた? っていうかコード読め。読んで理解しろって。 人様に突っ込むのなんざその後だろうが。
>>303 とことん恥ずかしい奴だな。
お前は
>>292 の内容が全く理解も想像もできなかったんだろ?
「文字列連結」と「Mid」というキーワードで連想するものを初めから知ってたらな、
最初の発言で「それは置換だろ」と指摘しとけよ。
もっともそんなこと指摘しても、
>>292 の疑問には何の解決にもならんがな。
ちなみに、
>>292 の回答は、「自分で計測して速い方を使え」だ。同じだったら、好きな方でかまわん。
>>307 その回答もどうかと
そんな浅い事なら質問してないだろう。
顔真っ赤で反論考え中w
そもそもMid$ステートメントなんてないのかもね。 Join関数をJoin$と書いても動くのと同じじゃねーの?
>>308 内部実装を知りたいなら、プロセスにアタッチして逆アセンブルされてるのを
眺めたらわかるかもね。
俺は興味無いけど。
>>307 何をいってるんだコイツ。
俺はエスパーじゃない。
>>292 の「Midステートメント(関数ではない)で文字列を連結」が
>>299 の
コードのことを指しているとして、そんなことが俺にわかるわけがない。
普通Midステートメントと文字列の連結といったらわかるぞ? エスパーじゃないのはもともと分かってるw
>>312 わからないなら、何でレスしたんだ?
おとなしく黙っとけば恥もかかずに済んだものを。
VBは年に一度触るかどうかレベルの奴が、何でこのスレ巡回してんだよw 教えたがりもたいがいにしとけよw
これはひどい・・・
ここではよくあること 気にするな
>>292 この間未だにVB5で稼動してるシステムにVB6と互換性あるJoin関数やReplace関数作ったんだけど
そんときMidステートメント使ったのね。
最初はMidでやってたんだけど遅い気がしてMid$に変えたら早くなったよ。
VB5だからなのか、使ってるマシンが古いせいなのかは知らないけど、
Mid$の方が早いみたいだしMid$使ったらどうかな?
320 :
292 :2008/05/03(土) 20:34:21
>>293 以外のみんなありがとね。
こちら何度やっても差が出なくて困ってる。
おれも>319のようにMid$の方が速かったことがたしかあったけど、どうも最近再現しない。
>>310 のJoin$みたいに、もしかしてつけなくていいものをつけてるとしたら馬鹿らしいし
>>319 にはすまんけど付けないことにするかな?
>>321 500万回でMidが5秒って、1回あたり1usじゃん。
+で文字列連結するのをMidに変えたときの恩恵に比べれば、差なんて無いも同じ。
・・・まぁ、俺は常にMid$つかうけどね。
323 :
292 :2008/05/03(土) 23:44:10
>>321 あまりラベルの低いサイトにリンク張らないように。
それってMid$関数だろ?
俺が言ってるのは関数じゃなくてステートメント。
いいかげん、うざくなってきたな
うむ
326 :
319 :2008/05/04(日) 11:33:59
なんか以前論争になったときは「変なこという奴だな」と思いつつも黙っていたが、 VBのような言語(つまりCのような設計思想の言語とは違う、と言いたいんだが)で 「組み込み関数」と「ステートメント」を峻別することに意味なんてあるんか?w 確かにMSDNライブラリ(俺の手元にあるのは2001年10月のもの)を見ると、 たとえばMid$ならMid$に関して、「Midステートメント」と「Mid関数」の二つのエントリーがあるが、 二つの説明を見比べれば、「Midステートメント」の方は明らかに「Mid関数」の返り値の型の仕様ついて 詳細な説明をスキップするための便宜上のもの(はっきり言えば煙に巻いて誤魔化している) に過ぎないように思われるが。
Dim s As String s = "1234567890" Mid$(s, 3) = "alpha" Mid(s, 3) = "beta" vb6でこーゆーコードをコンパイルして、逆汗したが、 結局両方とも同じように_vbaMidStmtBstr呼んでるだけだたよ。
ってことはMidで十分ってことだよな。 関数はMid$が常識だろうが。
フォーム タイトルバーのフォントサイズを変更するにはどうすればいいですか? フォーム プロパティのフォントサイズを指定すると 置かれている各コントロールのフォントサイズは変わりますが 肝心なタイトルバーのフォントサイズが変更されません
画面のプロパティのデザインで決まっているので、個別のウィンドウで変更することはできません。
WebBrowser1でWebを読み込んで縦スクロールバーをコントロールする方法ないですか? 最初に一番下まで持っていきたいのですが。
Webを書き換えできる立場にいるなら<a name="hoge"></a>でアンカー付けて読み込む時にURL末尾に#hoge Webは書き換えられないならフォーカスをIEコンポにしてSendKesとか・・・
midの話題に便乗して質問 replace関数とmidステートメントの使い分けって どういう風にしたらよろし? あとreplace関数で下のようにInStr関数を使って開始位置を設定するのは意味がない? strHoge = "...hoge" strFuga = Replace (strHoge, "hoge", "fuga", InStr(strHoge, "fuga", vbBinaryCompare))
>>335 使い分けって全然別物じゃんw
っていうか、だからVBのような言語で関数とステートメントを「使い分け」ることこそ意味がないつーに。
mid:
与えられたBSTRのバイナリイメージを直接上書きする。
当然、置き換えられた部分の文字数も、文字列の長さも変わらない。(変えられない)
replace:
与えられた文字列の中の特定の部分を別の文字列で置き換えた文字列を新たに作成する。
「置き換えられる」部分文字列の長さと「置き換える」部分文字列の長さは違っていてもかまわない。
vb6.0でフォームだけ透明化して、ラベルなどはそのまま表示させることって可能でしょうか? 方法があれば教えてください。
十字キーの↓でラベルを順に選択できるようにしたいのですが、 If GetAsyncKeyState(vbKeyDown) Then If Label3.ForeColor = Magenta Then Label4.ForeColor = Magenta Label3.ForeColor = Yellow End If If Label4.ForeColor = Magenta Then Label5.ForeColor = Magenta Label4.ForeColor = Yellow End If If Label5.ForeColor = Magenta Then Label6.ForeColor = Magenta Label5.ForeColor = Yellow End If End If と記述するよりもっと効率がいいやり方はないのでしょうか?
>>338 効率以前に「他人に意味が通じる文章」を書く方が先決だろう。
というか、推敲する手間を惜しむような奴にプログラマの才能などないと思う。
>>338 効率もなにも、ひょっとしてそのコードバグってないか?
13、14、15はYellowになるだろ、一回↓キー押しただけで
順ってなんですか?
>>338 訳:カーソルキーの↓キーを1回押すごとにラベルを順番に選択(色を変更)したいのですが、
>>338 のコードと記述するよりスマートになるやり方はありませんか?
>>339 分かりにくくてすみません・・・
>>340 バグってます。
通常の状態をマジェンタ、選択されてる状態を黄色にして、
↓キーを押すたびに選択されているラベルを変えるプログラムをつくりたいんですが、うまく行きません・・・
>>341 そういうことです。ありがとうございます
ラベルをコントロール配列にでもして、 現在黄色い場所をインデックスとして覚えといて そいつをカーソルキーでうろうろさせるとか
◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
http://system-trading.jp/news/index.php?cID=3 5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
デモトレードの優勝者には賞金三百万円がプレゼントされます。
▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
http://www.fx-gp.com/about/ ▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
コピペ君って馬鹿だな、まで読んだ。
GetAsyncKeyStateを使うとボタンを瞬時に離さないとIf以下のコードが何回も繰り返し行われてしまいます。 途中にWaitなどを入れてみましたが、そうするとキーを押したときに反応しないときがあります。 解決方法を教えてください。
>>346 釣りに見えるのはなぜなになでしこ
簡単に解決させたいなら ElseIf と KeyUpイベントを覚えるといいと思うよ
>>374 偉そうに舐めた口利いてる奴がそのレベルじゃアカンだろうw
コントロールのイベントはフォーカスがあるときしか拾えない。
こんなUIの基礎も理解してないの?
>>346 GetAsyncKeyStateのリファレンスにまんまの答えが書いてあるじゃん。
もちろん自前でステートマシン作って解決してもいいんだけど。
ステートマシンっていう考え方は小学生でも理解できるわりに応用が利く(たとえば
>>338 のようなコードをわかりやすくするのにも使える)から覚えて損はないよ。
>>347 ElseIfとKeyUpですか・・・ちょっと調べてきます
>>348 なるほど。もっと詳しく勉強する必要があるんですね。
ふたりとも回答ありがとうございます
だから詳しく勉強する必要はないの。 そう言ってるでしょ? MSDNライブラリのGetAsyncKeyStateの項にそのまんま答え書いてある
>>348 FormにKeyUpイベントあんの知らんの?
>>348 Labelのイベントだとは書かれていないのにも関わらず
Label_KeyUp()に書けと読み取ったお前もかなりやばいぞ。
キー操作でLabelに何かアクションする場合、
Form_KeyDown()やForm_KeyUp()に処理が書かれることが多い。
>>347 はそれを言ってるんだと思うが?
353 :
デフォルトの名無しさん :2008/05/15(木) 17:56:57
VB6を使ってるんだがFlexgridでAccess2000に接続したものを表示したい。 ADOコントロールを使わずに接続することって可能?
VB脳w
VB6を使用しています。 ADO2.5のRecordsetオブジェクトを使用し 以下のようなDBを参照し フィールド1 | ---------- A | B | C | データを Aを取得し変数にセット→MoveNext Bを取得し変数にセット→MoveNext Cを取得し変数にセット という流れで取得しています。 MoveNextなどをせずに 一気にA B Cのデータを取得し変数にセットをしたいです。 もし可能であればご教授ねがえませんか?
ご教授なんて呼ばれても そんな人いません
恥ずかしい馬鹿だな。 「ご教授」でもいいんだよ。嘘だと思うなら辞書引いてみな。 DBはやったことないんで質問には答えられなくて申し訳ない。
>>362 ご教授なんて日本語存在しませんがw
嘘だと思うなら「間違った日本語」とかでググってみな?w
あ、ゆとりさんに無理ですか そうですか
存在しないものを作りあげてしまうなんて
もうレベルが低すぎてこちらまで恥ずかしくなってきましたw
辞書を見て自分の都合のいい解釈する人に何を言っても。
それはいわゆる無知な「誤用厨」(まあ今俺が命名したんだけどw)が 勝手にそう言ってるだけ。 だから辞書引けって馬鹿。 ついでにその「誤用厨」が得意げに指摘する「確信犯という言葉の誤用」も 誤用じゃないんだよ本当は。
間違ったものを強引に正しいものにしようと必死な人がいると聞いて
飛んできますた
>>365 間違いを指摘されてるんだから、そろそろ悪あがきは止めて あきらめようぜ?ww
お前が馬鹿なのは十分分かったから、これ以上 墓穴掘るなよ
ご教授はどう考えても 存在しない日本語
日本人なら正しい日本語使え、プログラミングとかやる奴ならなおさら
あのなあ。 そもそも「教授」って言葉をポストに使う方が元々は派生的な用法だっての。 字面見ればわかるだろそんなの。
プログラムは正しくない命令文ではエラーが出るが、
「ご教授ねがう」は「ご教示いただく」のことだろうなってわかるだろ。
教えてやればいいだけでしょ。
お前らそんな固い頭でプログラミングとか向いてないんじゃね。
>>360 文章から、変数は配列じゃないと想定してレスすると、一気に変数に入れるのは不可能。
数が少ないならフィールド横に配置して1レコードにするとか。
フィールド1 | フィールド2 | フィールド3 |
----------
A | B | C |
変数に配列使ってループさせれば解決すると思うけどネ。
Function Nihongo_OK(ByVal str As String) As Boolean Select Case Instr(str,"ご教授") Case 0 Return True Case Else Return False End Select End Function
Debug.Print Nihongo_OK("あたご教授は素晴しい教授だ") False ( ゚Д゚)
誰?
ご教授って存在しないの? 教授に対して ご教授お願いしますってのもだめなの?
Private Sub CommandButton2_Click() Dim mambo As Date If Trim(mambo) = Null Then Exit Sub mambo = UserForm1.ComboBox1.Value Call search_light(mambo) End Sub 上のプログラムで「mambo」という変数には時間が入る(or空白)のですが、 「mambo」が空白の時でも、プロシージャが終了してくれません。 「""」を使うとエラーになるし、エラートラップを使うしかないのでしょうか?
>>360 Recordset.GetRowsメソッドじゃだめ?
>>373 とりあえずDate型の初期値はNullじゃないよ
If mambo = #0:00:00# Then Exit Sub
ListViewのような行と列を持つコントロールに テキストボックスやコンボボックスを表示されられるコントロール名ってなんでしょうか?
377 :
373 :2008/05/19(月) 09:13:12
>>375 遅くなってすみません。
ありがとうございます
コンボボックスで起動直後に任意項目を選択済みにするには ロードイベントにSelectedIndexで設定する以外に方法はありますか? コンボボックスのプロパティには初期値を設定出来る項目はないようですし
初期値を設定すべき実行部分で初期値を設定する以外に方法はないと思う
msgboxで表示される文字のフォント指定はどうやるのでしょうか?
そりゃあコントロールパネルからだ
>>382 どうみてもC#だが誤爆か?
それともそれをDLL化したものが「VB6以前」で使えないといってるのか?
後者ならあたりまえなので、COMのラッパークラス書いてレジストリ登録しなさい。
>>383 やっぱりVBで他言語のdllはコーディングし直さないと使えないのですか
VCで書いたライブラリをVBで利用するための詳しい解説付きサイトがあったので
C#のもいけるかなと思ったのですが
つか、inifile読み書きクラスって、車輪の再発明もたいがいにしろって感じ
>>384 「VC#で書いたライブラリをVBで利用するための詳しい解説付きサイト」を探して読め
ファイルAとファイルBのCSVファイルの内容を比較するプログラムを作る時 みなさんならどうしますか? 自分はまだ知識が乏しいので それぞれのファイルをSystem.IO.StreamReaderを使ってオープンして 一行読み込むたびに,区切りのデータをArray変数にsplitで代入して GetUpperBound(0)で最大を把握しながらArrayの各値を比較しています 先に全部のデータを変数かデータベースに読み込んでから比較したら 比較速度はかなり増しますか?
Dim tmp1(),tmp2() as string
Dim CSV1 As New System.IO.StreamReader(ファイル1, System.Text.Encoding.Default)
Do Until CSV1.Peek() = -1
tmp1 = Split(CSV1.ReadLine(), ",")
Dim CSV2 As New System.IO.StreamReader(ファイル2, System.Text.Encoding.Default)
Do Until CSV2.Peek() = -1
tmp2 = Split(CSV2.ReadLine(), ",")
''''ここに比較処理
Loop
CSV2.Close()
Loop
CSV1.Close()
>>387 実際のコードはこのような感じです
比較処理時間を短縮出来るもっと効率の良い方法があればご教示お願いします
>>387 .NETの話題ならスレチだが。
VB6以前なら
Dim FSO As Scripting.FileSystemObject
Dim sFileA As String
Dim sFileB As String
Set FSO = CreateObject("Scripting.FileSystemObject")
sFileA = FSO.GetFile(FileAのパス).OpenAsTextStream(ForReading).ReadAll
sFileB = FSO.GetFile(FileBのパス).OpenAsTextStream(ForReading).ReadAll
Set FSO = Nothing
If sFileA = sFileB Then
MsgBox "同じ"
Else
MsgBox "違う"
End If
ってやるとめっちゃ早いけど。
行単位比較だったら取得したファイル内容を、
SplitでvbNewLineを区切り文字にして配列ゲットしてループ&比較かなぁ?
それにしても携帯でコード書くと疲れるな。
比較してどこが違うか具体的に示す必要があるなら、それでいいんじゃない ただ異なっているかどうかだけでいいならバイナリで読み込んで比較するけど
>>389-390 ありがとうござます
>比較してどこが違うか具体的に示す必要があるなら
やろうとしてることがまさにそれなので
>>387 の方法で比較するしかなさそうですね
みなさん、とても助かりました
まずはファイルのサイズを比較して異なっていたら別物、同じなら中身を調べる、って処理を入れるのもアリだ
394 :
392 :2008/05/27(火) 19:38:04
DoEventをやめて BackgroundWorkerで完全なマルチスレッドにしたら 処理速度にかかる時間が以前の半分くらいと かなり早くなりました マルチスレッド化はロジックが結構複雑で 今までやりたいなと思いながらも結局はDoEventで代用してましたが やってみたら意外と簡単でいい勉強になりました
ループにDoEvent入れてたってオチじゃないだろうな
細かいようだが訂正 × DoEvent ○ DoEvents
398 :
デフォルトの名無しさん :2008/05/27(火) 22:30:43
携帯プログラミング テキストボックス1に文字が出る ボタン12個 ボタン1(1) ボタン2(2、A,B,C) ボタン3(3、D,E,F) ・・・ ボタン9(9、W,X,Y,Z) ボタン10(*)入力画面を初期化 ボタン11(0) ボタン12(#)同じ文字・数字をつづけて入力できる 多いですがプログラミングコードを教えてください。 本当によろしくお願いします。
>>398 そんな簡単過ぎるコードも書けないのか今時の学生って
ホントに勉強してるの?
グーグルツールバーみたいに入力候補がでるテキストボックス作りたいんだけどどうやるのがいいんだろう 検索対象の件数が増えると使い物にならないようなのしか作れん・・
候補の用意ができたとして、 表示する部分は、シェルにIAutoCompleteなどというものがあるらしいが、 VBから使えるのかどうかわからない、すまん。
>>401 ユーザーコントロールでコンボボックスとセットにして、
入力されたらリストだけドロップして見せればいいんじゃね
環境はWindowsXP PRO SP3 WSH5.7です。 以下のコードを実行すると、"1 2 ... 19 20"という結果になります。 For i = 01 To 20 j = j & " " & i Next WScript.Echo j 実行結果が、"01 02 ... 19 20"となるようにするには、 どうすれば良いでしょうか?
やらんとすることはゼロサプレス無しの2桁化でいいのか? j=j+" "+format(i,"00") ところでjの初期化は?
For i = 101 To 120 j = j & " " & mid(i,2) Next WScript.Echo j
>>405 レスどもです。VBSではformatが無いようで動きません。
FormatNumberとかはあるんですけど欲しい動作はなくて。
>>406 こういうトリッキーなやり方があるんですね。動きました。ありがとうございます。
ゼロパディングって言え
失礼な tricky ─────────────── 形 @ずるい,こうかつな A手のこんだ,扱いにくい,巧妙な
VBScriptはスレ違いのような
うんスレチガイだね
パディングとサプレスの区別が付いていない奴の居るスレはここですか?
VS2008のC++に移行しようと思って少しさわってみたけど コマンドの候補を表示してくれるインテリセンス機能ってないのか・・ さらに敷居が高くなった
Right("0" & i, 2)とかやらない?
Right(100+i, 2)
>>417 ふいたwwwwwwww
どうしても数値でやりたいのかwwwwwwwwww
でもありだな
>>416 だろjkくらいしか思わなかった
trickyだね
VBで標準出力に出力ってどうやるんですか?
ぐぐれ
ProgressBarを描画させながらその上でラベルを使って進行状況の%表示をさせると ラベルの背景が透明にならず不格好なので PictureBoxの疑似プログレスバーで 背景をDrawStringで透明にして%の文字を描画させたら 通常のプログレスバーよりとてつもなく描画処理が遅くなってしまい困っています プログレスバーの上に 進み具合を背景透明な文字で%表示させても高速に描画させる いい方法はないでしょうか?
オーナードローで文字を置けば?
プログレスバーの上にラベル表示ってどうやるの? 配置してみたら下になっちゃうんだけど・・
427 :
424 :2008/05/31(土) 10:25:49
修正 >でもやはりプログレスバーと × >でもやはり標準のプログレスバーと ○
>>427 確かにそのサンプルすごくいいな
ただのプログレスバーがそこまで自由にカスタム出来るとは思わなかった
430 :
デフォルトの名無しさん :2008/05/31(土) 12:30:27
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 'x2乗値を計算して、書き出すだけの問題 Dim intA, intB, intC, intD, intN1, intN2, intM1, intM2, intT As Integer intA = intB = intC = intD = intN1 = intN2 = intM1 = intM2 = intT = TextBox9.Text = 'この問題で使う関数は絶対値を求めるMath.Absだけ End Sub visual basic 2003 です。=の後に入る答え教えてください。
断る
なにその低レベルな宿題
スレタイが読めないレベルの人になに言っても無駄
VB6で文字を書くとき、OSのアンチエイリアス無効にすることってできる?
あと1年半でWindows7が出て、自作のVB6プログラムが動かなくなりそうなので、 VC++に移植作業を始めたけど、案外するすると移植できるもんだね。 VBではClassモジュールとFormしか使わなかったからかな。 C++は配列の代わりにvectorが使えるから楽だね。
Windows7だとVB6は動かないの?
MSが、VB6のコンパイラはもうサポート外 つくったEXEはVistaまではサポートに努力するが、それももう終わり って事だろ
あと1年半じゃ新しいOSは出ないと思うぞ。まVistaみたいに1年間も有料ベータテストを やるっていうのなら可能性はなくもないけど。常識的には2012年ごろかな?
じゃあVB6で作られたシステム使い続けてる多くのユーザーさんから 爆発的な量の案件がやってくるってことになるのかな? 新しいOS出た途端にってことは無いだろうけど。 動作テストして、VB6のシステムが動かなかったら そもそもOS変えないかもだけどw
Vistaにしたら動かなくなったソフトなんてよく聞くだろう VB6でもなんでも、ディレクトリ決め打ちとかせずにきちんと書けば、次のOSでも動くかと MSがVBランタイムを次のOSで殺せば全滅だが
VB6.0 SP6 なんですが、A dministrator権限のないユーザから OCXを使用することはできるでしょうか? レジストリに登録せずに参照する方法があれば教えてください
442 :
デフォルトの名無しさん :2008/06/10(火) 12:00:40
コレクションについて質問です。 キー文字列からインデックスを得る事は可能でしょうか?
443 :
デフォルトの名無しさん :2008/06/10(火) 17:41:20
VBAで素数判定するプログラムを作らなきゃいけないのですが、作り方が分かりません。 フォームは作れるんですが。。 どうやって作ればいいのでしょうか? 誰か教えて下さいませ。
>>443 素数判定がわからないのか
VBAがわからないのか
VBAで再現する方法がわからないのか…
VBAだし
445 :
デフォルトの名無しさん :2008/06/10(火) 18:15:03
VBAはある程度分かるんですが、素数判定をVBAで再現する方法がわからないです。 private sumとかはわかります
宿題は自分でやりなよ
447 :
デフォルトの名無しさん :2008/06/10(火) 19:45:28
ここは質問スレだから聞いてるんです。。
Public Function 素数判定(数) As Boolean If 数 Like "素数" Then 素数判定 = True Else 素数判定 = False End If End Function
>>447 はいって何だよ。出来んのかよ。さっきから何度も。何がはいなんだよ。
出来もしねえ奴が軽々しくはいなんて言うんじゃねえよ。
わかってんのかよ。はいって言う事の責任の重さを。
社会勉強のつもりでやってんだったら辞めろおまえ。
素数判定wwww そのくらい自分で書くかググれよwwwww サンプルソース結構多いのにアホかとwwwwww …って宿題か。 ここは宿題スレではないからスレチだな。うんうん。
VistaでVB6の環境立ち上げるとOLEレジストリへのアクセスエラーですってメッセージが 毎回表示されるんだけど回避方法ありませんかね? その後は普通に動作するんだけど気分悪いよ。
VB6ってXPにすら対応してないのに
>>443 で、宿題はできたかい?
添削ぐらいならしてやるよ
460 :
デフォルトの名無しさん :2008/06/12(木) 16:05:25
メニューバーの「表示」からコマンドとデザイナの項目が消えて、ファイルを 読み込んで続きをデザイナで作成することができなくなってしまいました。 どうしたらデザイナ画面を復活させられるのでしょうか?
>>460 メニューバーから開いたことがない俺ですこんにちは
俺はいつもプロジェクトエクスプローラから開いてるなぁ
MSflexgridで一番上と下の行を固定させる方法を誰か教えてー(;_;)
XMLHTTPでリクエストするときって、ポート80じゃないの?
464 :
デフォルトの名無しさん :2008/06/16(月) 15:22:25
あるデザインから他のデザインへクリック1回で飛べるようにしたいのですが、 リンクラベルのどの項目をいじって配置すればいいのかよくわかりません。 どうすればできるようになるのでしょうか? 教えてください。
先にシャワー浴びて来いよ
466 :
デフォルトの名無しさん :2008/06/16(月) 16:59:48
WinXPでVB6.0+クリスタルレポートでの開発をしています。 クリスタルレポートのバージョンは何が正しいのか不明ですorz とりあえず既存ソースを動かしたいがCRPEAutoでコンパイルエラーを起こします。 クリスタルレポートはバージョン不明ながらクリスタルレポート9をインストールしました。 Crystal Reports 9 ActiveX Designer Runtime Libraryを参照したが解決しません。 コンパイルエラーなので参照を指定すれば良いと思ったのですが根本的に勘違いしてますか? 何か参照する対象を間違えてますか。
>>466 GrapeCityのActivereportをかいなよ。
>>466 一度、元々のプロジェクトファイル(*.vbp)をテキストエディタで開いてみると良いかと。
xx
470 :
468 :2008/06/16(月) 23:55:09
いちおう説明追加しとくと、 「Reference=〜」となってるのが、参照設定 「Object=〜」となってるのが、コンポーネントね。
昨晩、車で猫を轢いちまったばっかりなんでな・・・・ 頭がタイヤの下に入っちまったようで、ゴリッと鈍い音がした・・・ たぶん即死だったと思われ。気のせいか眠るときに「ニャ」という声が聞こえた。 今日も聞こえるかと思うと恐くて恐くて・・・もうorz
……ぉ…ま……ぇ………ヵ……
……ヵッォ……
474 :
466 :2008/06/17(火) 10:44:45
> 467 たぶん、予算がありませんorz > 468 ありがとうございます。 参照しているdllに関しては同一名(パスは違った)を参照しているので問題はないはずなのですが もうちょっと頑張ってみます。
無駄にしている時間、日数の給料分を考えれば買ったほうがいい場合もある 予算の効果も考えろ
>>475 会社の実態を知らないなんで無職の方ですか?
問答無用で稟議が通らないなんてザラですが?
クリスタルレポートって重くねーか? 改良試作費で買ったけど使い物にならないんで放置。 どうせ捨てるんでよければあげるよ。 これが使える用途って元々かなり大きくて思いシステムで 帳票系の負荷が表に出て来ないようなシステムだろうな。 軽量化が望まれる俺たちのプロジェクトでは到底使えない。
>>476 馬鹿な会社に勤めてるんですね
恥ずかしくないですか?
>>478 会社が馬鹿なんじゃなくて、稟議が通るように根回しできない奴が馬鹿なのでは?
俺なんて秘書課の姉ちゃんとデキてるからやりたい放題だぜ。
プロジェクトの予算や納期などもわからない物件に対して、ああだこうだと 言うことになんか意味があるのか?
今話してるのは概念的なことだろうよ? 何もプロジェクトの詳細を知る必要はないだろう?
問答無用ですか 馬鹿ですね
何もかも「馬鹿」という言葉で集約するのはよろしくない。 それこそ「何とかの一つ覚え」と言われてしまうよ?
>>475-476 ,478-479
お前らの会話がVB(6.0以前)製煽りプログラムならいいが、
そうでないならスレ違いだ。
集約できてしまうんだよな 馬鹿は馬鹿でしかない
>クリスタルレポートはバージョン不明ながらクリスタルレポート9をインストールしました。 何気に見落としたが、この行為って超怒級の大馬鹿じゃね? どう考えてもやることがプロじゃねぇよwww
>>481 ああ、レスの流れを読み返したらそうだった。orz
「一考の余地がありますよ」→「実態も〜」?
ってことね。
ちょっと冷静になろうぜ。何に対して怒ってるのか明確にしてくれ。 まずはクリレポのA君からどうぞ。
まずは俺がCrystal Reports ActiveX のバージョンを明確にしてやろう プロジェクトファイルをエディタで開いてObject =から始まる文を全部コピーしてここに貼り付けてみなよ。
>>490 たぶん、プロジェクトファイルがどれかもわからない素人かと...
>>466 よく読み返したら素人だな。よくもまあみんな釣られたもんだなw
>>490 ActiveXの自動アップデート機能で既に書き換わってると見た。
実行環境の方は互換が保障されていれば上位のコンポーネントでも動くのだが、
開発環境の方はバージョンは絶対変えたらいけない。
実際無闇にパッチや他のソフトも入れられないことがあるのだ。
>>493 いや、もちろん
>>468 が言うようにオリジナルのをという意味だ。
素人だからオリジナルをそのまんま使ってしまったかも知れないがなwwww
俺たちプロは絶対にそんな過ちをしないもんだぜ。
>>493 俺はLEADTOOLSで酷い目に遭った事がある。
GUIDは同じでバイナリ互換なのにメソッドの仕様を変えてきやがった。
普通。インタフェース仕様を変えたらGUIDを変えるもんじゃないのか?OCXは
それ以降、恐くてアップデートできなくなった。
>>495 バイナリ互換にしなかった場合を考えればわかると思うが?
プロジェクトの変換でもしない限り新しいバージョンに差し替えられなくなる。
実際にはOCXの製品バージョンアップでもない限りGUIDは変更されないものだ。
パッチ毎に挙動が変わるBocSpreadSheetと共存してた俺は、もはや菩薩だな。
>>497 Spreadは2〜7まで使って来たがバージョン内ではそんなに大きな仕様変更はなかったぞ?
まあ確かに若干の挙動の変化はあったが俺としては許せる範囲だった。
そんなことを言ってたらLEEDTOOLSなんて絶対に使えないぞ。
同一バージョン内でリペイントの仕様を変えられて、全フォームで画像が表示しなくなったんだから!
びびるよまったくwwww
499 :
466 :2008/06/17(火) 14:21:47
えっとですね、VBPではクリレポ9を参照してるんですが、11を使えと言われるようなプロジェクトです。 だからとりあえずクリレポ9を入れたんですよ。 既存ソースを動かして大枠を理解したいので。 後は基本仕様書はないけど詳細設計書だけがあるとか、 でも詳細設計書もまともに書かれてないです 過去にプロジェクトに関わった人が辞めていないor忙しすぎてどこにいるのかも分からん という形なので困ってるという所です。 VBに関しては素人なんですが(一応7年この業界にいます、仕事でVBを触ったのは3ヶ月程度) 基本Javaメインでやってて今回火消し要員で途中から入れられた、 このプロジェクトに関わってる人間が1年目〜2年目の人間だけ。 環境設定手順書にも一切記述なし。 俺にどうしろっちゅうねん!!(来月退職届出す予定)
>>499 それはデザインとランタイムのバージョン不一致やん。
CRはそれが現実として起こり得るから恐いんだよね。
>>499 どおりで素人臭いわけだな・・・
最初からそこまで詳しく書いていれば荒れずに済んだものを・・・
クリレポ使いのおいらにはもう解決の方法は概ねわかったよ。
ちょっと面倒くさいがやってみるか?
それこそ、vbpのテキストを貼り付けたらいいじゃないの。 コンパイルエラーが出るような場合、多くは「古いVer」だし。 「とりあえず」って言葉が誤解を招いているのに気付いてる?
>>502 まあまあ、相手はJava使いでVB素人さんだ。もっと優しくしてやろうぜ!
>>499 それなら9じゃなくて11をインストールするだろ普通は?
おそらく11をインストした環境で9で設計したんだろうよ?
ランタイム配布する時にどうするつもりなんだろ??? おそろしやおそろしや・・・
507 :
466 :2008/06/17(火) 14:47:46
言葉不足でした、申し訳ありません。 VBPからReference部分を抜き出しました。 4行目の指定からクリレポ9を使うべきなのか?と思っていました。 Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\..\..\WINDOWS\system32\stdole2.tlb#Standard OLE Types Reference=*\G{EE008642-64A8-11CE-920F-08002B369A33}#1.0#0#..\..\..\..\..\..\..\..\WINDOWS\system32\MSRDO20.DLL#Microsoft Remote Data Object 1.0 Reference=*\G{00025E01-0000-0000-C000-000000000046}#5.0#0#..\..\..\..\..\..\..\..\WINDOWS\system32\DAO360.DLL#Microsoft DAO 3.6 Object Library Reference=*\G{AF376990-6120-4E28-96DD-63FD2DC27B7A}#9.0#0#..\..\..\..\WINNT\system32\craxdrt9.dll#Crystal Reports 9 ActiveX Designer Run Time Library VBP内の記述はどこまでならWeb上に出せる情報かも分かっていません。 すみません。 後は記述しなきゃいけないと思われる内容は どうもDBから直接データを抽出するのではなくて 一度MDBファイルに落としてそっからレポートとして出してると見ています。 プロジェクト内にデザイナは存在しない。 その為にシステム共通のbasファイルがあってそこにCRPEAutoの記述がある。 ここでコンパイルエラーです。 過去に携わった人とちょっとだけ連絡取れて話が聞けたので クリレポ11をインストールしました、またDLLも使うべきDLL(貰えた)で上書きしました。 でもエラーが消えていない状況です。 また、孫受けな為環境の変更に口出し出来ません。
508 :
466 :2008/06/17(火) 14:55:58
> 501 是非是非教えて下さい!お願い致します。
509 :
466 :2008/06/17(火) 15:01:51
追記:11を入れた後に参照してるのは Crystal ActiveX Report Viewer Library 11.0 Crystal ActiveX Report Viewer Export Library 11.0 Crystal ActiveX Report Viewer Web Report Source Library 11.0 の3つです。
>>508 以前、同じ問題に遭遇した事がある。そのときAGTechからもらった
CRPEAutoコンポーネント整合性修復ツールがあったと思うので探してみるよ。
ちょっと待ってて。
環境が無いから、なんともいえないけど、コンパイルエラーが出るオブジェクト または、メソッドについて、どもようなえらーが出るかで、対応は変わると思います。 エラーの内容(大事だよね)も必要かと。
512 :
511 :2008/06/17(火) 15:08:31
「どもような」?orz まあ、そんな感じです。
513 :
466 :2008/06/17(火) 15:09:09
Object =に関してはクリスタルレポート関連は参照していないと思います。 システム固有のocxも入ってますので晒すとまずそうなんですが・・・ マイクロソフト系が2つ、スプレッドシート用が1つ、後はシステム固有が2つという状況です。
セクションとかじゃなくアプリケーション、たとえば Dim app1 As CRPEAuto.Application の段階でエラーが出ると理解してるが?違ったりして・・・
515 :
466 :2008/06/17(火) 15:13:21
失礼しました。 エラー内容は以下です。 コンパイルエラー: ユーザ定義型は定義されていません。
516 :
466 :2008/06/17(火) 15:17:10
514の方の理解で合ってると思います。 ソース内の Dim XXX As New CRPEAuto.Application 上記部分がエラーメッセージが表示された時に青くマーキングされます。 VBももうちょっと触っとけば良かったorz
参照設定、コンポーネント、または、バージョン不一致だな。 DLLだけ持ってきてホニャホニャしたなら別だが…
519 :
466 :2008/06/17(火) 15:24:42
> 517 515で記述したメッセージ以外は表示されていません。 エラー発生行のコードは516に記述している通りです。 どの参照をチェックすれば良いのか分からず クリレポ関係の参照を全部チェックしてみたり、 コンポーネントを全部チェックしてみたりしたのですが駄目でした。 どっか根本的な所で勘違いしているのかもしれません。
まさかとは思うが CRPEAuto.dll がレジストされていないんじゃないのか? regsvr32 CRPEAuto.dll はやってみた?それでエラーにならない?
522 :
466 :2008/06/17(火) 15:40:19
> 520 regsvr32 CRPEAuto.dllはやっていません。 CRPEAuto.dllというdllファイルがないのですが、 こちらはCRPEAuto.dllというファイル名のファイルが存在しなくても実行可能ですか?
524 :
466 :2008/06/17(火) 15:47:12
貰ったdllはクリスタルレポート11の \Common Files\Business Objects\3.0\crystalreportviewers11内にある ActiveXControlsをフォルダ事上書きしてくれと言われたので上書きました。 フォルダ内にはcab、dep、dll、oca、ocxが入ってました。
>>524 上書きしただけでレジストしてないのか?
レジスト内容は9の当該コンポーネントのままだったり?
JAVAとは違うんだぞヲイ
>>522 >CRPEAuto.dllというdllファイルがないのですが、
もしかして壮大な釣りだったの?
527 :
466 :2008/06/17(火) 15:54:06
> 523
ごめん、俺自身良く分かっていない。
ttp://home.att.ne.jp/banana/akatsuki/doc/other/windows01/ ↑を見て
regsvr32 CRPEAuto.dllをコマンドプロンプトで実行してみた。
指定したモジュールが見つかりませんと出てきた。
> 521
いまいち理解出来ていないが頑張ってみる。
俺テンパってるな・・・orz
もしかして、VBの場合のdllのファイル名が
CRPEAuto.Application
↑のここと一致するのか?
Javaのクラス名とファイル名を一緒にするとかとちょっと似たようなもの?
528 :
466 :2008/06/17(火) 15:58:29
> 526 すまんが釣りのつもりはない! VB素人でいきなり放り込まれて本当に訳が分かっていない。 Javaで例えてもらえると助かる。 Javaで言うと現在の状況はimport文の対象先が見当たらないから コンパイルできないと怒られていて import文の対象さえ見つかればどうにかなるんじゃないかな? という認識だけど根本的に間違ってる?
>>527 Javaのアプレットは登録しなくても良いだろうが
OCXとか DLLはregsvr32で登録しないと参照できないんだよ。
君の環境ではCR9は登録されているのは間違いないが
CRPEAutoの構成こんぽーねんとはコピーされただけで登録されていない。
登録された位置に参照DLLが存在しないとレジスト自体ができないはず。
VB6は簡単だと思ったかも知れないが、一歩踏み込めばOLEオートメーション
という地獄が口をあけて待ってるのさ。君はその口の中にどっぷり入ってしまったわけよ。
おめでとうWWWW
530 :
529 :2008/06/17(火) 16:00:11
単にDLLと言ったがActiveX DLLな。 もしかしてDLLが二種類あるのも知らないだろ?
>>466 お前が偉そうな態度で物を言ってたから少しはデキル奴だと思っていた。
今、それが大きな間違いであった事に気付いたw
532 :
466 :2008/06/17(火) 16:15:21
> 529 えっと・・・やっぱりCR9をインストールしないといけなくて、 その後でCR9にあるCRPEAuto.dllというファイル名のファイルをregsvr32で登録しましょう という理解であってますか? CR9をアンインストールしてCR11を入れてWindowsのファイル検索で「CRPEAuto.dll」を検索したけど出てこなかった。 DLLが2種類あるのは遠い昔に勉強した気がするが最近は一切触ってないので覚えていませんでした。
533 :
466 :2008/06/17(火) 16:21:51
> 531 偉そうだったか・・・すんません!! とりあえずVB素人なのは確定でお願いします。 プログラムを組んだのもこの業界に飛び込んでからで専門的に教えてもらった事もないorz 2chで技術的な質問をきちんとしたのは今回始めてで、 今まではググったり、自分で調べればどうにかなったのだが 今回は本当に何がなんだか訳分かっていないで準備期間も用意出来なかった。
>すんません などとふざけた態度とる奴に、お前はどう接する?
>>466 お前の技量と目前にしている問題の大きさとがつりあわない。
困ったね。と、他人事だから軽く言うw
でも自分の問題だとしたらかなりやっかいだね。
正常に動いている時の状態があればまだしも
これじゃ複雑なパズルを解くようなもんだよ。
VB6 において _DragDrop() について、対象オブジェクト上での発生時 およびそれ以外での発生時ごとの処理が行いたいのですが、 どうやら一括しての「それ以外」処理は行えない様子 それではと言うことで _MouseUp() 時に処理を行えばいいかと 思ったのですが、DragDropを「0 - 手動」にしたうえで _MouseDown() 内で .Drag を発生させると その後マウスを放しても _MouseUp() が生じません なぜかダブルクリックを行うと2回目の放したタイミングで _MouseUp() が発生します これはどのようにすれば対応可能でしょうか
過去「VB初心者質問スレ Part4」において同じ悩みであろう 657 名前: デフォルトの名無しさん 投稿日: 01/12/27 16:22 Drag&Drop後のMouseUpイベントを取得する方法について教えて下さい。 具体的には... DragModeを手動にし、MouseDows時にDragメソッド(引数 1)で Drag&Dropを行うのですが、Drag&Drop後のMouseUpイベントが 取得できません。 フォーム外にDragされた場合に、イベントを取得できないので、 MouseUpであれば、フォーム外でもイベント取得できるので、 どうにかMouseUpを取得できれば良いのですが と言うのがありましたがレスがなかったようでした
538 :
466 :2008/06/17(火) 21:21:45
失礼しました、少し頭を冷やしてきます。 お騒がして申し訳ございません。
539 :
デフォルトの名無しさん :2008/06/18(水) 23:24:52
xpとvb5.0を使ってます
バイナリアクセスでファイルを読み書きしたいのですが・・・
レコード位置の指定方法がわかりません。
構造体に値を入れてから
putで入れてるのですが
そのときにレコードの位置をセットする方法がわかりません。
2番目のレコードを取得するにはどうすればいいのですか?
ここのやり方でほぼそのまま作ったのですが
http://support.microsoft.com/kb/151335/ja seek(#1)とやるとエラーがでました
あと
if EOF(#1)=true thenも
記述エラーが出ました
Seekでビット位置を取得しようと思ったのですが他にやり方があるのでしょうか?
また
持ってる本には
PRecord.FName = String(StrSize," ")が
String$
StrSize = Len(PRecord.FName)が
LenBだったのですが
それぞれの違いがわかりません
すみません。ピクチャーボックスを回転させるには どうしたらいいでしょうか?
そんなものはないから相応のコード書け
PlgBltというAPIがありました。
>>539 なんだかよくわからない質問だけど、
seek(#1) → Seek(1)
EOF(#1) → EOF(1)
関数の「$」有無は、引数がNULL値の場合にNULLを戻すとか、エラーにするとか。
Lenは文字数、LenBはバイト数。
全部ヘルプに書いてある希ガス。
>466がかわいそうだ 今後こういうパターン増えていくんだろうな
>>543 >>539 は自分で晒したKBの内容すら読めてない
日本語できない子だから英語で教えてあげて
もしくはスルー推奨
546 :
デフォルトの名無しさん :2008/06/21(土) 16:33:11
VB6ってもう手に入らないんですか?
日本語出来ない以前にバイナリアクセスで次のレコードって…
>546 MSDN契約しな
おいくら?
VB6の値段としては高いな
VB6などはMSDNから外されてなかったっけ? 持ってるから興味ないけどさ
JAVAを外してVB6.0だけ復帰してたはず
555 :
日立バキバキ高野くん祭り :2008/06/23(月) 19:50:18
1.日立製作所社員の高野くん(高野光弘)が会社を誹謗中傷して機密も漏洩
2.日立のユーザーにも「キチガイ」との障害者差別発言
3.日立製作所の企業イメージをバキバキにする
4.自身のサイトの『32nd diary』に掲載
5.日立製作所に通報される
6.あせって似顔絵削除
7.火に油を注ぐだけで所属する日本UNIXユーザ会にも通報祭り勃発
8.「給料泥棒」と説教される
9.「殺します」と殺人予告をして警察に事情を聞かれる←イマココ
高野光弘の行動
現在は、過去の記事を閲覧できなくして、「本日の日記はツッコミ数の制限を越えています」としています。
まずは、不愉快な思いをされた方々に謝罪するべきなのではないでしょうか。
高野光弘の発言
「まぁ、どこの団体もそんなにヤワじゃないので、平気なんですけども。
日本UNIXユーザ会が一番対応に慣れてる感じ。」
日本UNIXユーザ会が対応に慣れているか、みなさん確認してみてください。
連絡先
http://www.net.intap.or.jp/oiia/cont2/p0402.html%7B0recid=10168.html
536です 上記の件についておわかりになる方、いらっしゃいませんでしょうか
>>556 VBだけだと、無理なような気がします。
APIでドラッグ中オブジェクトのシステムメッセージを取ってみると、きちんと
マウスイベントは通知されているようです。
SetWindowLong、CallWindowProc などを調べてみてください。
上記のAPIを使う上での注意点としては、システムからVBの関数にコールバックさせるので、
後始末をきちんとしないと、動作が不安定になることがあります。
>557 参考になりました APIを使わずに回避したかったのですが 仕様ならやむ無しです ありがとうございました
559 :
デフォルトの名無しさん :2008/06/29(日) 16:04:13
VBScriptで質問があります。 HTMLのselectタグの中のoptionタグをボタンで押すことで、 消したり追加したりしたいんですが、innerHTML以下のようにしたのですが、 駄目でした。どこが悪いのでしょうか?お力を。 ちなみにサーバサイドはASPです。 Sub changeRadio(strFlg) Dim strAti Dim strNvidia <% Dim strA Dim strB Dim intCounter For intCounter = 0 to rs.recordcount-1 if left(rsGPU.fields.Item("vchGPUName"),1)="A" then strA= strA & "<option value=""""" & rs.fields.Item("intA") & """"">" & rs.fields.Item("vchA") & "</option>" else strN= strB & "<option value=""""" & rs.fields.Item("intB") & """"">" & rs.fields.Item("vchB") & "</option>" end if rs.movenext Next %> strAA="<%=strA%>" strBB="<%=strN%>" if strFlg="A" then document.formA.SelA.innerHTML=strAA 'SelAがselectタグです else document.formA.SelA.innerHTML=strBB end if End Sub
560 :
559 :2008/06/29(日) 16:09:26
すいません、2行目訂正ですorz >HTMLのselectタグの中のoptionタグをボタンで押すことで、 HTMLのselectタグをボタンで押すことでselectタグ内のoptionタグ でした。
561 :
559 :2008/06/29(日) 16:12:03
ああ、また訂正です。。。。駄目だorz NG >Dim strAti >Dim strNvidia OK Dim strA Dim strB ...
クライアントサイドはJavaScriptにした方がいいよ
563 :
デフォルトの名無しさん :2008/06/29(日) 17:38:53
VB(笑) おまえらもう用なしだよw
564 :
559 :2008/06/29(日) 17:51:36
selectタグでは駄目なようなので、もう一段階上の階層に対して InnerHTMLを使うことにしました。 お騒がせしました。
treeviewですべてのノードを展開した状態で、上から何番目ってのを取得できるのでしょうか? 親を追加→子を複数追加→孫を複数追加〜みたいにノードを追加していくと、 ノードのindexって追加した順番に付いていき、上からの絶対敵な位置にならないので困ってます。 プロパティとか、色々見てみたんですが、なかなか思うようなものがなく。。。 おたすけくださいー。
こんな感じの関数を作ればいいんじゃないかと。 Private Function fncGetNodeLine(twCtrl As TreeView, targetNode As Node) As Long On Error GoTo err_proc Const C_TREEDEPTH_MAX As Long = 10 Dim lngCnt As Long Dim lngDpth As Long Dim nd(1 To C_TREEDEPTH_MAX) As Node fncGetNodeLine = 0 lngCnt = 0 If twCtrl.Nodes.Count > 0 Then
--- 続き --- lngDpth = 1 Set nd(lngDpth) = twCtrl.Nodes(1).Root.FirstSibling '先頭ノード Do lngCnt = lngCnt + 1 If nd(lngDpth) Is targetNode Then fncGetNodeLine = lngCnt lngDpth = 0 '対象ノード発見時終了 ElseIf nd(lngDpth).Children Then Set nd(lngDpth + 1) = nd(lngDpth).Child '子ノード lngDpth = lngDpth + 1 Else Do If Not nd(lngDpth) Is nd(lngDpth).LastSibling Then Set nd(lngDpth) = nd(lngDpth).Next '次ノード Exit Do End If lngDpth = lngDpth - 1 '一つ上のノードに戻る Loop While lngDpth > 0 End If Loop While lngDpth > 0 End If
--- 続き --- exit_proc: On Error Resume Next For lngDpth = 1 To C_TREEDEPTH_MAX Set nd(lngDpth) = Nothing Next lngDpth Exit Function err_proc: MsgBox Err.Description, vbCritical, "Error" fncGetNodeLine = -Err.Number Resume exit_proc End Function
関数にfncなんてプリフィクス付ける人初めて見たよ。 よく見る'obj'以上に無意味だと思うんだけどね。 いや、コードを読む人間をいらつかせる機能を狙ってるのなら そういう意味はあるけど。
>>569 そうか?
VBでのプロジェクトのコーディング規約で、たまに見るけどねw
意味は無さそうだけど、「関数の戻り値に代入している」という事が判別しやすい。
という、VB特有の意味はあるかもしれないかもしれないかも………。
571 :
デフォルトの名無しさん :2008/06/30(月) 00:23:17
>>569 コーディング規約に噛み付いてどうする。
fncもsubもよく見かけるし、そもそも規約なんてそのプロジェクトにとって意味があるかどうかだろ。
あなたがどんなプロジェクトに関わってきたのか知らないけど、
正常orエラーを返す関数をcallで呼んで戻り値評価しない奴がいたり、
オブジェクトの開放処理をしない奴って結構多いよ。
特に人の入れ替わりが激しいとこや新人率が高いとこなんて、
一人が規約を無視してそのコピーが疑問なしに次々と乱立することも少なくない。
関数にはfncをつける→fncはそこでは不要でも必ず戻り値の評価をする、とか
参照型はobjをつける→Exitする際に必ず開放する
といった決め事にした方が、品質の高いプログラムを作りやすいことも多い。
VB6は誤ったハンガリアン記法の品評会だったからしょうがない 一応正しいハンガリアン記法というのもあって 変数が言語のもつ型以外の意味をもつ場合につけるプレフィックス 例えば整数じゃなくてこれはハンドルだという場合にhをつけるのは正しい
573 :
デフォルトの名無しさん :2008/06/30(月) 01:39:03
日本語でおk
解放、な。
>>571 こういう場所に質問に答える形でコピペしてるコードに「コーディング規約」って
意味不明だろうw
別にそんな訳のわからない理屈振り回さなくても素直に「俺の趣味だ」でいいじゃん。
まあ個人的には愚かな趣味にしか思えないけどね。
「fncXXX」に噛み付いてみた → 「初めて見た」に噛み付いてみた → 「コーディング規約」に噛み付いてみた 次は何かな?
577 :
デフォルトの名無しさん :2008/07/01(火) 10:40:07
fncくらいでイラつく理由がわからない。 あーこの人はこういう書き方するのねって思うだけだけど。
intを返すIsなんちゃらの乱立よりはマシww
>>578 Integerを返すIsナンタラで真なら 0 / 偽なら -1 を返す、
Booleanを知らない奴が作った関数なら知ってる。
頭のコメントに「備考」と称して、
「VBにもBOOL型があればいいのに」
って書いてあって、最初見たとき素で笑ってしまったw
>>577 別にイラつく、とまでは書いてないけどね。
しかし、まあVBスレでこんなこと書くのもなんだが、
過去の自分含めて他人の「アホな」作法を見てイラつくような性格じゃないとしたら
その人はプログラマの適正を欠いている、と個人的には思うよ。
お前はそんな性格だから禿げるんだよ
WORKGROUP
>>580 お前は人としての適正を欠いてるわ、と個人的には思うよ。
うちはVBとVB.NETでコーディング規約を替えてる うはややこい
OS:XP SP2/Vista SP1 VB6 SP6で開発してます。 XPとVistaでインストーラを分ける必要ありますか? ちなみにVisual Studio Installerを使ってます。
びす太の夏休み
589 :
デフォルトの名無しさん :2008/07/16(水) 01:26:17
VB6でDeleteキーを効かなくしたくて、 KeyDownイベントハンドル内に KeyCode=0 と入力したのですが キーが効いてしまいます。 .NETではこのように書くように載っていたのですが 6.0では違う書き方なのでしょうか? それか、Deleteキーをきかなくするのに、 keydownイベントを用いること自体が違うのでしょうか。
>>589 「効かなく」とは、どういう事なのか、もう少し具体的に書かないと…
591 :
デフォルトの名無しさん :2008/07/16(水) 21:11:17
デバイスの有効、無効を切り替えたいのですが、どのようなコードを書けばよろしいでしょうか デバイスはUSB接続のゲームコントローラです
592 :
デフォルトの名無しさん :2008/07/16(水) 23:48:28
>>590 確かに分かりにくいですね…
キー操作を無効にしたいです。
KeyPressイベントハンドル内での
KeyAscii=0
と同じ操作をKeyDownイベントハンドル内で
行わせるにはどのように書けばいいのでしょうか。
よろしくお願いします。
>>592 KeyCode=0で間違ってないと思ますよ。
もし、フォームでイベントを拾おうとしているならば、KeyPreviewプロパティに注意するくらいかな。
VBScriptで、 IEの右クリックから呼び出した場合と、 2chブラウザ(IEコンポーネントブラウザ)の右クリックから呼び出した場合を、 見分ける方法について教えて下さい。 navigator.appnameやnavigator.useragentは、 2chブラウザから呼び出した場合でも、IEそのものに成ってしまって、区別出来ないので、、、 どうぞよろしくお願い致します。 if 2chブラウザなら then window.open(TargetURL) else Call external.menuArguments.open(TargetURL, "_blank") end if という様に、2chブラウザからならIEを立ち上げて、 IEからなら別タブに表示させたいのです。
スレタイを読み直してどうしろと言うのか
>>595 >>1 に
>二.VBScript、インストーラーなどはこのスレでOK。
599 :
デフォルトの名無しさん :2008/07/20(日) 23:08:11
600 :
デフォルトの名無しさん :2008/07/21(月) 01:28:44
VBだけでコールバック関数を実現したいんですが、無理でしょうか? ちなみにcallptrというDLLを使って実装はできるのですが、 なるべくVBだけでできる方法はないかなと模索中です。
601 :
600 :2008/07/21(月) 02:23:04
ちなみにこれで実現は可能ですが、
CallPtrの方はDLLしかもソースが公開されていないのでいまいち。
VBで関数ポインタによる関数の実行はかなりいいのですが、コールバック関数の
中でMsgBoxなどのメソッドは呼べないし、引数使うと落ちたりと不安定です。
CallPtr.DLL
http://www.softcircuits.com/dl/tools/callptr.zip VBで関数ポインタによる関数の実行
http://nienie.com/~masapico/doc_FuncPtr.html こんな風にVBでコールバックできます。でも引数渡すと落ちます。
Private Sub Command2_Click()
CallFuncPtr AddressOf testproc, "test message"
End Sub
Public Function testproc(srcmsg As String) As Long
Debug.Print "a"
testproc = 0
End Function
callbyname
603 :
デフォルトの名無しさん :2008/07/22(火) 00:25:51
質問なのですがVB6で両替させるにはどうすればようのでしょうか?
ttp://quote.yahoo.co.jp/m3?u ←このレート計算みたいな感じです。
[ ][combo1]を [Text1]に [Command1] [ ]
数字 ドル 円 換算 結果
ポンド
ユーロ
お願いします
>>603 コードを書けつってるの?
どのようにってifかselectで判定させるだけなんだけど
レートをどこから持ってくるつもりだ
606 :
デフォルトの名無しさん :2008/07/22(火) 00:33:53
そうなんですコードを知りたいんです
レートは固定でドル107・ポンド213・ユーロ169です 申し訳ありません
難しくないからがんばれよ
自力でがんばってみます 短い間でしたがありがとうございました。
611 :
デフォルトの名無しさん :2008/07/22(火) 01:05:12
フィードパス使え
本当にありがとうございました 助かります
なぜドル・ポンド・ユーロが2つずつあるのでしょうか? あと「うんこ」の部分を「換算」に変えたいのですがどこをいじればいいのですか?
615 :
600 :2008/07/22(火) 02:06:09
こんな糞コード弄らないで1から書けよ
>>612 614にコメントしたことはさきほど変えられました。
ありがとうございました
すみません。フォームをunload meで閉じたあとに そのフォームがフォームのkeyupイベントを拾ってしまって 勝手にloadされてしまうのですが このようなことってあるのでしょうか? フォームはkeypreviewがonになっています。
質問します 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を同時に インクリメントすることは可能でしょうか?
いやそのかんがえかたはおかしい
自己解決しました
すんませんが・・・教えてください。 VB6から使えるコントロールで、msinet.dll を使わないで、独立してHTTP通信を カプセルするものって無いでしょうか?Grapecity さんのは内部でmsinet使っている らしくて・・・ 有償ものでかまいません。出来れば日本語版がいいけど・・
WinHTTPとかどうよ
「Microsoft WinHttpRequest Component」を参照追加して
Dim WinHttpReq As New WinHttp.WinHttpRequest
WinHttpReq.Open "GET", "
http://www.microsoft.com/ ", FALSE
WinHttpReq.Send
Dim d() As Byte
d() = WinHttpReq.ResponseBody
だってさ。
読むだけならopenだけでできなかったっけ?
624 :
621 :2008/07/23(水) 03:41:39
WinHTTP・・・調べてみます。xmlhttp ではなくって? しばらく考えて・・・結局、NICを直接使うDLLなんかまず無いだろうから、 WinINet.dllを使っているレベルで妥協するしかないのかなと・・・ openURL のバグがたまに起きるのが面倒なのと、アップロード時(POST)に途中でちょん切れる PCがたま〜にあるんですよね。古いPC相手にするのは面倒っす
625 :
デフォルトの名無しさん :2008/07/23(水) 09:17:50
スレ違いな気もするのですが、VB6ならなんとか組めるので ここで質問させていただきます。よろしくお願いします。 現在PCにLANで接続されたプリンタが約50台程登録されています。 プリンタはプロパティ>印刷設定>給紙で、印刷先のトレイを設定しています。 今回このPCを新しくする事になり、旧PCの設定が正しく新PCへ引き継がれているという資料を 提出しなければいけなくなりました。 この50台のプリンタ(物理的には20台)の印刷先トレイの設定情報を textでも印刷設定画面の画像でも、なんでもいいので一覧で出力したいのですが 良い方法がありますでしょうか? rundll32 printui.dll,PrintUIEntry /e /n "PrinterName" で印刷設定画面までは表示できたのですが、給紙のタブへ切り替えたりする方法がわかりません。 rundll32 printui.dll,PrintUIEntry /? で出てきた内容を見ていくつか試してみたのですが、目的とする物は出力できませんでした。 アドバイスよろしくお願いいたします。
626 :
625 :2008/07/23(水) 09:21:04
環境を書くのを忘れていました。 OS:Win2000(SP3) プリンタ:CANON LBPシリーズ VB:VB6(SP6)
給紙のタブに切り替えるのはSendKeyとかでCtrl+Tab送ってあげればいいんじゃない? 悩んでるぐらいならハードコピーとって切り貼りした方が絶対早く終わると思うけど。
どーせレジストリに格納されてるんだろうから、 regmonあたりで格納場所を決定して、あとは リモートレジストリ経由で取ってまわったら終わりじゃないの。
>>624 低水準なものが欲しいなら、Winsock使ったら?
VB上でswfファイルを再生できるようにしたいのですがどのように組めば良いのでしょうか webbrowserを設置してnavigate2でできるかと思ったのですが httpから始まるものしか表示できません
Flashのコントロールじゃだめなのかい?
やってみたんですが配置した途端VBがエラーで閉じてしまって・・・
そこまで面倒みきれんわ
634 :
600 :2008/07/27(日) 01:15:41
636 :
デフォルトの名無しさん :2008/07/27(日) 23:19:52
現在本を見ながら預貯金の金利計算プログラムを作っています。 本に書いてある通りに記述してるのですが '変数の宣言と初期化 Dim presentvalue As Double = 0 Dim rate As Double = 0 Dim years As Double = 0 Dim futurevalue As Double = 0 '入力値の取得 presentvalue = Double.Parse(PresentValueBox.Text) rate = Double.Parse(RateBox.Text) / 100 years = Double.Parse(YearsBox.Text) '元利合計の計算 futurevalue = presentvalue * (1 + rate) ^ years '元利合計の表示 FutureValueBox.Text = futurevalue.ToString() 入力値の取得の3行がうまくいきません、何故でしょうか教えてください。
それVB.NETでしょ
,;r'"´;;;;;;;;;;;;;;;;;;;;;;;;;;`ヽ、 ,r'";;;;:::::;彡-=―-=:、;;;;;;ヽ、 /;;ィ''"´ _,,,,....ニ、 ,.,_ `ヾ;;;;〉 `i!:: ,rニ彡三=、' ゙''ニ≧=、!´ r'ニヽ, ( ・ソ,; (、・') i' ll' '゙ ,;:'''"´~~,f_,,j ヾ~`''ヾ. ヽ) , : ''" `ー''^ヘ i! ll`7´ _,r''二ニヽ. l !::: ^''"''ー-=゙ゝ リ l;::: ヾ゙゙`^''フ / 人、 `゙’゙::. イ
VB6、今日はじめたばっかりだが早速はまった private function s() as string dim r_s as string r_s = "hello world" end function private function ss() dim h_s as string h_s = s() msgbox(h_s) end function でh_s = ""なんだ。。。 普通に関数の返り値をとってきたいだけなのにはまって竜。。。 CやC++、Java、各種スクリプト言語は、3年以上経験ありますが、VB系はじめてです
>>640 いまさらVB6なんて、仕事?
functionには関数名と同じ名前の変数が暗黙で定義されててそれに代入すればreturn値になる。
昔のpascalに合わせたのだろうね。
private function s() as string
s = "hello world"
end function
Thx、仕事なんですよ。はっきりいって乗り気は全くないけど、 仕事だから言語を選んでる余裕なんてにゃい。 そっか、名前あわせないといけないのかー Type end type したやつを戻り値にしたりしないといけないんだが、それもおんなじかんじなんだろうね。 ありがとう、明日ためしてみるよ。
ハァハァ。やっと外部エディタにEmacs使うようにして、VB6モードつくった。 あとピーターノートンVol1,2 合計8000円もしたぜ。。。注文した。 今日はこれでおしまい!
645 :
デフォルトの名無しさん :2008/08/07(木) 15:33:32
VistaでVB6使っていたんだけど、ロードエラーになってしまった。 UACをオフにしたらなおった。 他のPCでも同じ問題が出てる。なんかあったのかな。
>>645 アプリケーションの実行時に
管理者権限与えないとダメなんだと思われ
647 :
デフォルトの名無しさん :2008/08/07(木) 16:09:05
ウィニー3つくりたいんだけど、VB6でできます?
お前じゃ無理。
今からVB勉強するとしたら VB6からか、それともVB2008のどちらが良いでしょうか?
>649 普通に考えると.Netだが・・・
Visual Studio .NET 2003 でしょうか?
結局フリーのVB2008を使ってるのですが Labelのサイズを変更しようとして、数値を入力しても 反映されません。何が原因でしょうか?
AutoSizeが原因でした。 もっと調べてから質問するようにします。 申し訳ございません。
>>649 VB6から覚える
比較的簡単に習得できるが.netに移行した際、違和感を覚える
仕事的にはVB6の案件はまだまだあるし、参考文献やサンプルコードが盛りだくさん
それはそうと今からVS6やVB6手に入んの?
.netから覚える
クラスの概念に対する知識が必須。ゼロからじゃ無理。Cでもやれ
覚えた頃にVB6を触るとソースが短過ぎて(横に)びっくりする
やるなら2005か2008。他はVista未対応なので先は短い
C#もそう大差なくコード書けるようになる気がするようなしないような
ただし仕事は開発の最前線に近い位置なのでそれなりに適応力が要る
>>654 ありがとうございます。
VB6は後に入手方法がよくわからないのであきらめました。
今はフリーということもあって2008を使って、
簡単なプログラムを作って練習しています。
2008に関するサイトはあまりないようなので本を勝手勉強します。
ちなみに ビルト と コンパイル では全く違うのでしょうか?
656 :
655 :2008/08/07(木) 21:12:58
ビルト → ビルド
>655 2008はスレ違い。
すみません
ビルドとコンパイルは、言語の基本的な用語だから、ググるとでるよ ググるこつは「○○とは」が有名か
Label1.Caption = Label1.Caption & Str(ban)&" "& Format"baik", "###,##0"&" "&kn &Chr(13)& Chr(10) と入力すると、ステートメントのエラーとでます。 なぜでしょうか?
すみません Label1.Caption = Label1.Caption_& Str(ban)&" "& Format"baik",_"###,##0"&" &kn &Chr(13)& _Chr(10) です
>>660-661 たぶん「ここが悪いから」って教えたところで、次も聞きに来るレベルなので、
どっかのサイトのコピペ改造するんじゃなくて、この命令は何をしているのかを
理解しながらプログラム書いたほうがいい。
難しかったらまず繋がってるソースの部分を最小単位に分解しな。
今回の例で行くと
・アンダーバーによる行連結は使用しない
・&は1行に1個まで
って分解すればエラーの部分もわかるだろ。
>>662 ありがとうございます。
試して分析してみます
>Label1.Caption = Label1.Caption_& Str(ban)&" "& Format"baik",_"###,##0"&" &kn &Chr(13)& _Chr(10) もし俺が上司なら死ねって即答するレベル アホみたいな書き方せず一旦変数に入れて確認してみろタコ まず、&を引っ付けるなクズ。スペース入れろ Format"baik",_"###,##0" これは何だこれは 右辺にあるのに括弧無しか?ていうかstringをフォーマット?意味が分からん baikが数値の入った変数として書くなら 〜 & Format(baik, "###,##0") & 〜 だろうが 何で半角スペースは" "と書いてんのに改行はChrにしてんだ、 それならChr(32)ってやれよ。っていうかラインフィールド込みなら Chr(13) + Chr(10)だろうが。vbCrLfって書けよタコ Label1.Caption = Label1.Caption & Str(ban) & " " & Format(baik, "###,##0") & " "& kn & vbCrLf とするか Label1.Caption = Label1.Caption & Str(ban) & Format(baik, " ###,##0 ") & kn & vbCrLf だろう もっと言うなら Label1.Caption = Label1.Caption &〜 これやめれ。一旦変数に入れろタコ あとプリフィックスくらいまともにしてから質問しろ。こっちに解析させるな
優しい上司だな
LFはラインフィードだお
>>664 優しい上司みたいだけどところどころに間違いが見当たるのはアレか?
「お前を試してたんだ」とかいう理由でか?w
素晴らしいな。
教えながらにして相手をテストするだなんてww
668 :
デフォルトの名無しさん :2008/08/12(火) 12:14:57
VB6のリストビューをドラッグ&ドロップ可能にした時に、 順番を入れ替えた後の表示順で各アイテムのテキストを取得したいんですが。。。 .NetだとDisplayIndexで行けるんですが、VB6.0だと何か方法があるでしょうか? ご教示願います。
ビルトでもイインダヨ!
670 :
デフォルトの名無しさん :2008/08/13(水) 01:26:37
>>664 >Label1.Caption = Label1.Caption &〜 これやめれ。一旦変数に入れろタコ
なんで駄目なん?
駄目じゃぁない。
>>664 の趣味じゃね?
Forステートメントの中でやったら遅くなる等の害があるけど
最初のうちはそれでもかまわないと思うよ。
672 :
デフォルトの名無しさん :2008/08/13(水) 01:54:57
>>671 プロパティ参照が時間かかるからですよね?
確かにForの中ならそうすべきかも知れませんが繰り返し回数にもよるし
一回だけしか参照しないのなら変数宣言して可読性が落ちる分
これもありって考え方もありますよね
個人的にはこんな細かいことを指摘する上司のが嫌だ・・
時間掛かるのもあるかも知れんが、 Control = Control & 〜以降に計算式なり関数は入れるべきじゃあないな 変数同士くっ付けるだけならいいと思うが
674 :
デフォルトの名無しさん :2008/08/13(水) 02:07:08
>>673 べきじゃないという根拠は?
好みで言ってるだけなら無視しますねw
普通に考えてデバック面倒だろ。アホか
格好つけてワンライナー気取って痛い目見る様が目に浮かぶ
デバックでググったら254,000件もヒットして驚いた なんだデバックって
デバカ
デパガだろ
職種が全くの別物に変わるね
あるチェックボックスをチェックした時にあるコマンドボタンを使えるようにする場合、 Private Sub chkHoge_Click() cmdHage.Enabled = ( chkHoge.Value = vbChecked ) End Sub みたいな書き方するのはよくないですか?
ディレクトリにあるファイル一覧を表示して、マウスで、選択された状態(複数可) のファイルパス名、一覧を配列で取得するような機能ないんじゃろか。。。
ないよ。
>>683 つーか、そういうのを作るのがプログラミングなわけで
たった、そんだけの多くの人が使いそうな機能つくるだけでも、へたしたら半日かかる。 おまいが、もっと下手したら、17時におわってなくて、無能とよばれるだろう。 どっかのVBアプリからひろってくるのをお勧めする。
見つけて拾ってくるのもなにげに時間かかったりする訳だが。 完全に要望にマッチしてなかったらカスタマイズしなきゃならんし。。。
ふつうのfile open dialogに不満?
fileopendialogのmultipleかなんかtrueにしたら似たような事できたよな。
690 :
デフォルトの名無しさん :2008/08/17(日) 23:00:25
>>675 アホはおまえ
何を優先するかの問題で好みにすぎん
すぐアホとか言う奴は何も考えてない奴に多いなw
691 :
デフォルトの名無しさん :2008/08/20(水) 16:27:10
環境上VB6でやらざるを得ません。 XP256MBでVB2008とかは論外で。 DBがMYSQLなんですが、 V5あたりになったとたんに、ODBC含めて まともに動作しません。 経験された人おられますか? スレ違いでしょうか?
>XP256MBでVB2008とかは論外で。 開発にはきついけど、動作環境としてはぎりぎり範囲内だよ。
10万もあれば環境全部そろえてお釣りが来るだろ?PC買えよ
そんな予算ある仕事じゃないのでしょう
1台くらいなんとかなるだろ?もしかして学生?
696 :
デフォルトの名無しさん :2008/08/20(水) 21:46:18
まあそんなに大きい会社じゃないけど 10 PC 以上あれば そんな簡単に、全部買い換えってわけにはいかないんです。
環境が実装仕様に影響を及ぼそうとしているのに、10PC程度も買えないとはどんな糞会社なんだよ。
レンタルで借りればいいのに 10台くらい必要な開発ならそれくらいの予算は軽いだろ
oracle蔵すらまともに動かない気がするが、仕事にならんだろそれ
700 :
デフォルトの名無しさん :2008/08/20(水) 22:12:51
やはりこのスレだ。 口悪いけど、その通り。 ただ、ここは postgres と VB6 とかはダメ? だもんで、スレ違い?
口悪いとは失礼だな
702 :
デフォルトの名無しさん :2008/08/20(水) 22:20:45
失礼しました。 他のところは素人ばっかで話にならないの。 口が悪いのは、自信があるということかと。 そういう意味です。
というか、いまからVB6で新規案件かよw libmysqlclientでも直接叩いとけw
ODBCはもともと規格がはっきりしないというか、 MSから分かれて長いからVB6から使えるかどうかは微妙なのよ。 PosgresやMySQLのODBCを使うつもりなら直接ODBCのAPIを使うつもりじゃないとな。 ADO-OLEDB-ODBCブリッジ経由だとまあ期待しないこと。
>>691 MySQL5から文字コードがUTF8に変わったからじゃないでしょうか?
違ってたらすみません。
706 :
デフォルトの名無しさん :2008/08/20(水) 22:53:24
VB6でやるしかないから、ここに相談してるんでしょ? ODBCが怪しいのは、なんとなく感じてました。 有難うございます。
707 :
デフォルトの名無しさん :2008/08/20(水) 23:05:46
しかし ODBCのAPIか〜〜 なんか道遠いな〜 ま、やってみます。
ダラダラ遠回りしてる時給分でPC買えよ
709 :
デフォルトの名無しさん :2008/08/21(木) 10:18:47
確かに時間の無駄っぽい。 SQLserverも考慮してみますわ。 PG全部のDBアクセスをAPIに変えるのも VB2008用にコンバートするのも、さすがに腰がひける。 またMSが仕様をいきなり変えないとも限らんし。 なんせ200本以上あるから頭がいたい。 禿げはしそうにないけど、全白髪はありえそう。
sqlserverはやめとけって。移行するとなると面倒だぞー。
711 :
デフォルトの名無しさん :2008/08/21(木) 21:25:06
やっぱ、ここのレスだと、くじけずにすむ。 そりゃ、Oracle でやれればいいんだけど 今回事情が複雑で、DB用にもう200〜300万出してくれとは ちょっと言えない状況なんでね。 とりあえず、今日 SQL鯖2005 はインストールしたんで 試してみます。 その結果次第で再考ですかね。
712 :
デフォルトの名無しさん :2008/08/21(木) 22:37:56
あ、申し訳ない。 レッスン と スレッド がごっちゃになって 「スレ」を間違えがちなんです。
oracleって無料じゃないの?
postgresqlかMysql4じゃだめなのかい?
715 :
デフォルトの名無しさん :2008/08/22(金) 00:10:24
あのね みんな優しいね。 話がループしてんじゃん。 まあ、だからここが好きなんですけどね。 無料の ORACLE あれば、紹介してください。 POST と MY は ODBCに問題があるんで SQL鯖 を入れて明日テストする予定なんです。 ほんとに、ここは退屈しないね。
XEが無料だけど、Oracleはこういうバージョンを出しっぱなしで後のフォローをしないことが多いからなぁ〜。 VB6と組み合わせるならOO4Oの方がまともかな。 odbcやoledbだと空文字の扱いが問題になることが多い。
いかにも自分は賢いみたいな言い草で書いてるけど ODBC3.51だか使ってるかキャラセット間違ってんだろ 十中八九後者だと思うけど単純にコーディングが糞なだけかも知れん ロクにPC変える経費すら出せん所見ると、入れたSQLserver2005って まさかExpressEditionとか言わないだろうな。
たしかにMysql5では、UTF8で俺も苦労したことはある、とくにCSVデータの取り込み。 1000万レコードくらいあるうち800万がSJISで半角入り、のこりEUC、JISだったなぁ。 もうRubyスクリプトで、1レコードごと、1要素ごとにエンコーディングチェックして変換していった。 でも、結局なんとかなった。 VB6でもODBCで楽しようとしなけりゃいけるはず。
719 :
デフォルトの名無しさん :2008/08/22(金) 10:07:26
とりあえず SQL2005 でやってみたら あっさり動いたみたいです。 しゃくだけど、やはりMS同士のほうが愛称いいんでしょうかね。 文字化けもしないし。 あれやったり、これやったり、・・・ まるでトライアスロンやってるような気分。 しかし、なんか悔しっすよね〜。長いものにはまかれろ、みたいな。
720 :
デフォルトの名無しさん :2008/08/22(金) 17:20:34
1日かけてデータの移行もやってみましたが、大きな問題も 無いようです。排他とかの問題は出る可能性もありますので いきなり、乗り換えるつもりはありませんが。 ただ、こういう手もあるんだったら、しばらく環境は今のまま MY 4.0 で流しながら、横でチマチマやってみようと思います。 もともとサーバー2台は同じ環境で実績のある 4.0 の予定で いたところ、突然、4.0 が MYSQL HOME からいなくなったのが 今回のドタバタの発端なんで。・・・ (私も)突然こちらに飛び込んできて、お騒がせしました。 いろいろな助言含め相手してもらって助かりました。 一人でハマッていた自分には心強かったです。
722 :
デフォルトの名無しさん :2008/08/22(金) 23:58:19
当面は今の MY 4.0 で運用しながら様子をみて 5.0 がこのままで 支障が発生する様だったら、たちまちは、無料の SQL2005 であれこれテストして まともに動くようなら、それでしのぎながら商用版も検討する可能性はあります。 チマチマというのは、その間にいろんなDBで様々なテストをしてみる。 という意味です。 今回いろいろな情報もらったので。ありがとね。
色んなDBでってことは… SymfoWAREも試すのか 大変だな
どっからどう見ても頭沸いてるアホなんだから構わずに放置しといてやれよ
informixも忘れないであげて
726 :
デフォルトの名無しさん :2008/08/23(土) 15:20:58
とりあえず一段落したんで、ODBC の API にかかろうとしたんですが、 こりゃ本末転倒ではないかいな・・・と。 助言のとおりで、フリー系はみるからに仕様が??(一般資料が無い) 逆にまだ調べれば、なんとかなりそうなのはMS。 (オリンピックは終わったけど、)なんか100m走でスタートラインには いるけど向きは逆で、競技場出入り口向いているような感じですか。 フリー系で接続部品が怪しい時は使わない。根性でやる!・・と たしかにそんな気がしてきました。
727 :
デフォルトの名無しさん :2008/08/23(土) 19:30:45
あとは金銭面ですが、今回のこのシステムに関しては非常に特殊ですので ユーザーさんの件についてはコメントできませんでした。申し訳なかったです。 今回出てきたDBについては、きちんと再調査します。 ただ、さすがにもう、これ以上はスレ違いと思いますので。
なぁ、ここはお前の日記帳じゃないんだぜ?
でも何の返事も返ってこないよりは、まだいいと思う。
まだいいとかの問題では無い
731 :
デフォルトの名無しさん :2008/08/23(土) 23:31:01
申し訳ない。 今回、思いのほか、いっぱいの助言もらって助かったんです。 その結果を伝えようとしたら、日記帳みたいになってしまったのかもしれません。 でも、これから先の話はDBになってしまうので、 ここのスレでは規約違反になると思ったんです。
いいかげんにしろ!しつこい!
733 :
デフォルトの名無しさん :2008/08/24(日) 00:09:07
じゃあね
まぁな。DB程度でつまづくような奴はスレ立てればいい
735 :
デフォルトの名無しさん :2008/08/24(日) 01:07:19
50才過ぎてスレ立てるほど体力無い! 今後、この話題は無しにしてください。
736 :
デフォルトの名無しさん :2008/08/24(日) 02:44:20
ここは良いスレと思うんです。 いざとなったら、色々な人が助けてくれるでしょ? まあ、歳、ばらしちゃったから言うけど いろいろ見てきて、こんな面白くって頼りになるとこは、あまりない。 と、思う。 もう少し大事にしてあげてもいいと思う。 と、言ったら また、くどい! とか言われるんですかね。
50過ぎでここまで稚拙な文を書く人を見たのは初めてだ 無駄に時を過ごしたんですね
738 :
デフォルトの名無しさん :2008/08/24(日) 03:07:52
ありがと。 50才まで一生懸命生きてきたから時間がもてるの。 で、俺のことはいいから 自分の時間を大事にしましょうね。 それに、ここはVB6のスレじゃなかったっけ? VB6に人生感があるならOK でなくてもプログラムでもOK 言っておきたいのはスレ荒らしじゃないよ。 なんか似てるだけで。
まさに馬齢を重ねけり
740 :
デフォルトの名無しさん :2008/08/24(日) 04:04:42
ほんとに潮時なんで引揚げます。
煽るなよ低脳PG共が
Access経由且つDAOでやるとか、方法は様々だと思うけど 50にもなって社内で意見求める知能もないのはオhル
2008にしたらツールボックスの項目が表示されません。 テキストにドラッグするってことなんだが・・・
2chで朝4時にかきこむ50歳なんていねぇよ。
746 :
デフォルトの名無しさん :2008/08/24(日) 15:45:15
早起きだなあ
747 :
デフォルトの名無しさん :2008/08/26(火) 11:43:03
VB6.0を扱っています。 コマンドボタンの代わりにキーボードからの入力をしたいのですがどういうプログラミングをしたらよろしいのでしょうか? 例:1を押したらここのプログラムが実行される。
>>747 【KeyDown】【KeyPress】【KeyPreview】
749 :
78 :2008/08/26(火) 22:53:11
VB6.0でコマンドボタンを押したときにシフトキーをキーボードで入力したということを起こせないでしょうか?
まあなんと哲学的な文章。
>>749 VBの機能ではたぶん無理。
つ【GetAsyncKeyState】
752 :
78 :2008/08/26(火) 23:13:31
>>750 そう冷やかさないで、日本語が変なのは分かってたけど上手い文章が思いつかなかったんですよ。
キーボードのドライバを作り、それにむかってシフトキーを押したというアクションを打たせればOK
754 :
78 :2008/08/26(火) 23:14:31
755 :
78 :2008/08/26(火) 23:16:15
756 :
デフォルトの名無しさん :2008/08/27(水) 21:54:08
>>749 シフトキー入力のルーチン作成、それをパラメタ付でCALL
757 :
78 :2008/08/27(水) 22:13:24
>>756 そのルーチンが作れなくて困ってるんじゃ
758 :
デフォルトの名無しさん :2008/08/27(水) 23:19:14
シリアル接続でロボットアームを操作してシフトキーおさせるのだ
760 :
デフォルトの名無しさん :2008/08/28(木) 00:27:40
星新一が書いた本にでてきた機械を思い出した
あったね〜。
マジレスするとWin32Apiのkeybd_eventかSendMessageを使えば可能(指定ウインドウに対して)
あの、 コンパイルして作るファイル名にあわせて Constで指定する値を変えるとか そういうことってVBじゃできないもんでしょうか?
ConstにせずともApp.EXENameから取得すればいいんじゃなかろうか?
766 :
デフォルトの名無しさん :2008/08/28(木) 21:01:35
ん〜 ConstでいけたらVBセロになっちまうような (寒)
767 :
デフォルトの名無しさん :2008/08/29(金) 20:27:43
clone て どう使えばいいんでしょうか
不思議な島の?
それはフローネ。
770 :
デフォルトの名無しさん :2008/08/30(土) 09:37:48
FTPでファイル送信をwininet.dllを使って実装しています。 しかし、コネクションのタイムアウト設定だけがどうしても実現出来ません。 ネットで調べあさったところ、 InternetSetOptionStr→InternetSetOptionの順で設定すればいけそう というところまでは辿り着けましたが、それでも無理でした。 デバックしたところ上記2つの関数はともに戻り値正常で来てました。 どなたかお力をください。 環境 VB6 WindouwsXP pro SP2 IE7
771 :
デフォルトの名無しさん :2008/08/30(土) 22:57:12
>>770 wininet は BUG だらけだから使わないほうが良いとの記憶が
BASP とかではだめなんですか?
772 :
デフォルトの名無しさん :2008/09/01(月) 21:41:09
どうのこうのと言っても、2000シリーズはうまく出来てる。 そろそろVB6も限界かな。
このコードで実行するたびに結果が違うのはなぜですか? 参照設定=>CAPICOM v2.1 Type Library Sub test() With New CAPICOM.EncryptedData .Content = "ぬるぽ" .SetSecret "ガッ" Debug.Print .Encrypt End With End Sub 先頭64文字は同じだから後は不要とか?
>>771 遅レスで申し訳ない。
メインの処理は実現出来ているので、タイムアウト設定のためにフリーのDLLをクライアントに登録してくれとは言いにくいです。
IEのバージョンなど、環境に左右されるのでwininetもどうかとは思うのですが、それでもやはりユーザーはwininetを選ぶと思います。
でも、こういうDLLがあるんだと参考になりました。ありがとう
XP以降ならSxS COM使えば、COM登録は要らないけど、そういう話ではない?
776 :
デフォルトの名無しさん :2008/09/02(火) 20:26:01
>>774 ありゃま。事情がそれでは頑張るしかないですね
普通のDLLの感覚でいくと「なんだこりゃ」みたいな予想外の動きをするので
使い方の発想を変えてしまうのもありかも。あとは納期の問題ですか
777 :
デフォルトの名無しさん :2008/09/02(火) 20:52:22
>>774 マイクロソフト 及川卓也殿は wininetデバッグバージョンを使用して調べなさい
と、のたもうておられます。こんなん有りなんかね
ものすごく臭い鼻くそが大量に出たんですが、どうしたらいいでしょうか。 よろしくお願いします。
>>776 >普通のDLLの感覚でいくと「なんだこりゃ」みたいな予想外の動きをするので
>使い方の発想を変えてしまうのもありかも。
とは、どういうことでしょうか
>納期の問題
納期よりやはりそのDLLをインストールしてもらうだけの説得力がないということですかね。
>>777 なかなか厳しいですね。
暇そうな奴つかまえて調べさせるかw
781 :
デフォルトの名無しさん :2008/09/02(火) 21:39:24
782 :
デフォルトの名無しさん :2008/09/02(火) 22:04:13
>>779 マジレスになるかどうかごめん
wininet は思い通りに動作しない
フリーズしている訳ではない
とすれば時間監視はこちらのPGで計算する
時間監視して、目的のファイルがUP出来たかどうかチェックする
当然UPした容量確認は必要です。
783 :
デフォルトの名無しさん :2008/09/02(火) 22:18:08
応援 やっちまったなー
>>882 ああ、なるほど。
それなりのチェックが必要になるわけですね。
もうタイムアウトは無視して、割り切ってゴリゴリ書いていきますw
わざわざありがとうございました。
マルチスレッドにすればいいのでは
786 :
デフォルトの名無しさん :2008/09/03(水) 09:59:51
あの〜、VB6でPictureボックスに絵を書かせているのですが、Pictureボックスの 上に別のウィンドウが重なった後、そのウィンドウをどかすと重なった部分の描画 が消えています。上のウィンドウをどかした後に自動的に再描画させるのってどう やったらいいんでしょう? なにとぞよろしこ
AutoRedraw=True とRefreshで再描画しないか?
788 :
786 :2008/09/03(水) 15:58:51
あんがと。Refreshが足りなかったんだな。 AutoRedraw=True だけしかしてなかった。
if msgbox("aa") = cancel then vbCancelと書くところを間違って、cancelと書いてしまいました。 option explicitしていて、cancelという変数も宣言していないのですが、 エラーなしでした。cancelとは何なのですか? この動きは、msgbox("aa")がとばされました。
790 :
デフォルトの名無しさん :2008/09/03(水) 18:56:50
>>789 cancel は基本登録文字列なんです。boolean と考えるのが近いです。
Validate が わかりやすいかもしれませんよ
792 :
デフォルトの名無しさん :2008/09/04(木) 19:10:24
>>789 失礼しました、FormのUnload、のほうがわかりやすいような
ここで Cancel = true とすると、Unload イベントがキャンセルされます。
つまり、テコでも終了しない画面が一行で出来てしまう便利?なものです。
どちらかというと、普通の感覚と逆の動きでしょうか。
Public Const MB_OK = &H0& これの &H0& ↑この&は&Hで16進数という意味ですが &H0&←この最後の&ってどういう意味?
即値の型がLongであることを示すとかなんとか
INTとかSHORTとかLONGとかの意味のなかのどれか
796 :
デフォルトの名無しさん :2008/09/04(木) 20:34:33
Public Const MB_OK = 0 Const で 0 なら型指定は意味ないのでは ただ MB_OK の使いかたによるかも 右の&はLongでしょう
VB6でintもshortもないだろ
798 :
デフォルトの名無しさん :2008/09/04(木) 21:07:54
>>797 そう思う。VBは数値型なら型変換しちゃうから
Public Const MB_OK = &H0&
Private Sub Command1_Click()
Call sub1(0)
Call sub2(0)
Call sub1(&H0&)
Call sub2(&H0&)
End Sub
Private Sub sub1(P As Long)
If P = MB_OK Then
MsgBox "OK"
End If
End Sub
Private Sub sub2(P As Integer)
If P = MB_OK Then
MsgBox "OK"
End If
End Sub
全部 OK 表示
799 :
デフォルトの名無しさん :2008/09/04(木) 21:27:29
あ、currency とか single double は別よ。その場合による
VBスクリプトでしたいことがあるのですがうまくできません・・・ 1.コマンドプロンプトを立ち上げる 2.ディレクトリを変更するためカレントディレクトリする。(何故かこうしないとダメ・・・環境変数の設定が不可みたい?) 3.コマンドラインツールを立ち上げテキストに記述されたコマンドを発行させる。 4.テキストの数だけ実行をさせる。 Dim objWshShell ' WshShell オブジェクト Dim strNewFolder ' 移動するフォルダ Dim i Dim strEXE Set objWshShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then strNewFolder = "D:\Test" objWshShell.CurrentDirectory = strNewFolder objWshShell.Exec("cmd.exe").StdOut.ReadAll Else WScript.Echo "エラー: " & Err.Description End If For i = 1 to 15 strCOM = "XXXX.exe @ D:\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt" Set oExec = WshShell.Exec(strCOM) WScript.Sleep(300000) Next Set objWshShell = Nothing
801 :
デフォルトの名無しさん :2008/09/04(木) 22:12:19
>>800 要するに、テキストで登録された一連のコマンドをVBスクリプトで
実行させたいとの意味でしょうか?
802 :
デフォルトの名無しさん :2008/09/04(木) 22:27:47
ありがとうございます。 そういいたかったんです。 うまく言えずすいません。
803 :
デフォルトの名無しさん :2008/09/04(木) 22:49:20
>>802 VB6 なら 訳ないんですが、VBスクリプトはインターネットに特化してるんで
ローカルの処理に無茶苦茶弱いんです。
でも、これも、お客様の要望ならしかたないですが、時間かかるかもしれません。
だれか、わかる人いますか?
804 :
デフォルトの名無しさん :2008/09/04(木) 22:57:57
本来なら OCX 作るほうが早いんですけどね
無理。諦めろ。
>>793 例えば、trim(A)とtrim$(A)という書き方がある。
結果は同じだが、この$には
VB4(?忘れた)以前の書き方の互換と、$でString型を明示する意味があると何かで読んだ記憶がある。
String型明示することで、体感出来ないくらいほんのちょっとの速度UPしているとかなんとか。
まあ今のPC性能を考えると、完全に趣味の領域らしいが。
ほんとかどうかは知らんが、同じようなレベルじゃないかなと思ってる。
807 :
デフォルトの名無しさん :2008/09/05(金) 00:29:32
初歩的ですまないです…VB6の環境すらないもので OCXってなんでしょうか?すいません 知らなくて… スクリプトでなんとか出来る気がしてたんですよね(泣)
>>806 まったく違う
知らないなら書き込むなよ
>>800 その一連のコマンドは、vbs内で起動したcmd.exeの中で動かさないといけないのか?
>>808 俺は806の言う事は間違ってないと思うぞw
まあスピード云々の話は文脈的に余計な印象はあるけどね。
>>806 その手の関数は、戻り値の型が$なしだとVariant、$ありだとStringってヘルプに書いてあったはず。
外部コマンドだからcmd.exeの外だろ
815 :
デフォルトの名無しさん :2008/09/05(金) 00:58:48
>>807 多少違うかもしれないけど Flash Player と ほぼ同じ機能と思ってもらって
いいと思います。作ってしまうと簡単ですよ。
816 :
デフォルトの名無しさん :2008/09/05(金) 01:10:52
それに、みんな無茶言い過ぎですよ
817 :
デフォルトの名無しさん :2008/09/05(金) 01:17:07
>>814 正確に創られたサイコロなら、確立は1/6
バカを相手にするな!アリエネ
818 :
デフォルトの名無しさん :2008/09/05(金) 01:35:45
1が八回連続出る確率がわかるんだったら間違いなく宝くじ買う 普通に考えると10の八乗でしょうけど
819 :
デフォルトの名無しさん :2008/09/05(金) 01:38:53
違う6の八乗か
820 :
デフォルトの名無しさん :2008/09/05(金) 01:54:04
1/100776697 です 明日というか今日仕事なんですけど
821 :
デフォルトの名無しさん :2008/09/05(金) 06:24:49
>>800 です。
みなさんありがとうです
そうですねー
VBSでcmd起動させて→exeのある場所へカレントディレクトリして→
exe起動+コマンド発行といった具合のつもりです。
ぶっちゃけバッチファイル生成して、それを実行した方がよくね?
>>820 そういう事態を招かないように周りにアラート出し時なよ…
824 :
デフォルトの名無しさん :2008/09/05(金) 12:22:58
でもいっぱいテキストあったらバッチは大変な気がします… バッチってFORステートメントみたいのって使えましたっけ?
OSのバージョンによるけどFOR /F が使えるならそうとうのことが出来る。 for /? でヘルプ見るべし。
べつに、バッチファイルをvbsで生成してもいいわけだし。
cmdの標準入力に書き込め
830 :
デフォルトの名無しさん :2008/09/05(金) 19:35:38
>>822 >>828 ぶっちゃけ派3人目
テキストの内容に法則性があるなら、言語はなんでもいいからbat作成PG
作ったほうが早くね?議論している時間で出来ているような気が
831 :
デフォルトの名無しさん :2008/09/05(金) 19:50:51
>>814 すんません。時間が時間で鮭も入っていたもんで、ワヤ文書でした。
要は 1/6 * 1/6 * 1/6 * 1/6 * 1/6 * 1/6 * 1/6 * 1/6 が常識で、
あの手の論議はしまいには、じゃあ、完全に 1/6 が出るサイコロができる確率も
必要だろうが!
みたいな話になって、万有引力とはなんだ。相対性理論とはなんだになって、
最後は宇宙ってなんだ?で、ドンズマリ。相手にしないほうが賢明
うぜえよお前こっちまで引っ張ってくるな
画像ファイル加工についての質問です。 vb6.0でファイル(.bmp)を読み込み 指定した文字を貼り付け表示させたい場合、ファイルを読み込んだ後 どのような処理を行えばよいのでしょうか? 例)ある画像の真ん中に「こんにちは」という文字を貼り付ける
「表示」だけならラベルでいいだろ
835 :
デフォルトの名無しさん :2008/09/05(金) 20:24:14
>>833 そりゃ、アノテートでしょうか。
一般的にだとちゃんとした部品買うのが一番ですが高いよ
素人方法で良いなら、image でよみこんで Label かぶせてハードコピーの
要領で 別の image なり picture に転送
当然、picture と label ではむりですよ。
836 :
デフォルトの名無しさん :2008/09/05(金) 20:38:41
>>833 Form を透明にする API はわりとまともに動作した。
文字の Form を透明にしてかぶせるのもありかも
837 :
デフォルトの名無しさん :2008/09/05(金) 20:44:56
>>833 時間があるなら、画像の上にグラフィック命令で書く
838 :
デフォルトの名無しさん :2008/09/05(金) 20:58:05
>>833 1.上書きしたい文字をペイントでも良いので作成
2.それをピクチャーボックスで読み込んでドット位置を拾って格納
3.下地の画像を読み込んで
4.2.のデータを読んで上書き
839 :
デフォルトの名無しさん :2008/09/05(金) 21:13:57
>>833 手っ取り早いのは
>>834 の方法で画面表示して、そのハードコピーをとる。
それをリーダーで読み込んで出来上がり。ってのもありのような。
840 :
デフォルトの名無しさん :2008/09/05(金) 21:16:45
悪い、リーダーで読む必要はないですね。
>>833 ちょいと力技になるけど。
1:PictureBox(pic1)を一つ用意して普通に画像を読めるように設定して読み込む。
2:pic1.CurrentXとpic1.CurrentYに文字を置く場所の左上の地点を設定する。
3:pic1.print "hoge"で書きたい文字を書く。
4:pic1.savepicture()辺りを使って保存する。
842 :
デフォルトの名無しさん :2008/09/05(金) 21:37:35
割と真面目な相談です。 Vista では VB6 の開発環境は保証しないとのことですが、 これは、どこまで本当なんでしょうか? さすがにインストールは控えているんですが。
サポートしてないだけ 何があっても対応はしないよと言っている 使えないわけではない
844 :
デフォルトの名無しさん :2008/09/05(金) 21:58:33
>>843 折り返しの質問で申し訳ないです。
SP6は当てといたほうが良いのでしょうか。
845 :
デフォルトの名無しさん :2008/09/05(金) 22:14:52
説明不測ですね。 HPなんかは XPとVISTAと リカバリが2種付属だし VB.net から VB2500 に戻したりした経路があるので VISTA もまた ME みたいに消えてしまう可能性もあるように思えるんです。
開発用に環境作ればいいだけだろ?馬鹿か?
847 :
デフォルトの名無しさん :2008/09/05(金) 22:44:43
>>834 835です。タイミングが悪かった。
そちらを素人と言った訳ではないので。
誰か教えてくれ。他の板で見たんだが、VBでは5 Mod 2.5は0になるのか? VBAは1になるんだが。
849 :
デフォルトの名無しさん :2008/09/05(金) 23:16:14
>>846 最近のソフトは大きいから、あれやこれや、やっているうちにdiskが
ごちゃごちゃになってしまうので即フォーマットで再インストール
いちいちSP当てていられないから、そのまま使用している訳です。
SP当ててないので、検証できないので、聞いているのにバカ呼ばわりですか。
850 :
833 :2008/09/05(金) 23:22:14
説明不足で申し訳ないです。
今回の目的はFormに表示させるわけではなく
.bmpファイルの加工です。
最終的にやりたいこと。
.txtから送信したい文字列を抽出
↓
.bmp(テンプレートファイル)に文字列を貼り付け
・文字列は情報、住所、電話番号などをそれぞれ指定の場所に
↓
.bmpを.tifファイルに変換しFAX送信
>>834 >>836 表示だけでなく加工をしたいのです。
>>835 アノテートという単語を初めて知りました。
ググってみましたが私の目的と違うようです。
>>837 >>838 貼り付ける文字列が多いため厳しいかもしれません。
いくつか教えていただいた中では
>>841 の
方法が適しているのでしょうか?
852 :
デフォルトの名無しさん :2008/09/05(金) 23:37:54
>>850 多分それで正解でないでしょうか。
一番理解できたとのことでは。
853 :
841 :2008/09/05(金) 23:41:51
>>850 (
>>833 )
それが目的なら
>>841 の方法でもこなせますね。
文字を書き出す始点のみ調整すれば一応やっつけ仕事ではありますが、こなせる筈です。
仕事としてこなされているみたいなので、あまりカンペに頼るのはヨクナイ事なのですが…。まぁいいか。
'以下のサンプルは、作業中のフォルダにあるtest.bmpを引っ張り出してきて最下部付近に文字を書き込んでtestRE.bmpを出力します。
'オブジェクト名Pic1でPictureBoxを用意しておいて下さい。
Private Sub Form_Load()
Dim Texter As String
'<TODO>(変更箇所)
Texter = "hogehoge"
Form1.ScaleMode = vbPixels
With Pic1
.ScaleMode = vbPixels
.Appearance = 0
.AutoRedraw = True
'l-TODO-->>追加設定事項をここに。出力結果を変更する場合は--TODO->>lまでの間を弄ればOK。
.AutoSize = True
.Font.Name = "MS ゴシック"
.Font.Size = 18 * (72 / 96)
.ForeColor = RGB(0, 0, 0)
Pic1.Picture = LoadPicture(App.Path & "\test.bmp")
.CurrentX = 2
.CurrentY = .Height - .FontSize * (96 / 72) - 2
'--TODO->>l追加設定事項をここに。(l-TODO-->>の終点)
Pic1.Print Texter
.Refresh
SavePicture Pic1.Image, App.Path & "\testRE.bmp"
End With
End Sub
なお、完全に位置が調整できないので注意が必要です。
855 :
デフォルトの名無しさん :2008/09/05(金) 23:48:30
>>848 少数の問題では?
5 を 2.5 で割ったら余りは 0
5 を 2 で割ったら余りは 1
VB だと書き方によるけど 2.5 が 四捨五入で 3 と判断されたりして
5 MOD 3 で 2 になることもあるかも
思いがけない動きをしますから、いろいろ試してみること
ごめん。私はそこまで確認していません
銀行丸めの話?
857 :
833 :2008/09/06(土) 00:01:49
858 :
デフォルトの名無しさん :2008/09/06(土) 00:04:19
>>853 やっぱり仕事か〜
ここはプロが多いからね
自分もスレは素人なんで気づかなかったんだけど、ソース表示には
なんかコツがあるんでしょうね。スペースとかタブの位置合わせは
無視されてしまうんですかね。全部ベタになってしまう。
859 :
デフォルトの名無しさん :2008/09/06(土) 00:12:38
860 :
デフォルトの名無しさん :2008/09/06(土) 00:14:58
>>848 Mod演算子のヘルプ
解説
剰余演算子は、数式 number1 を数式 number2 で除算し、その余りを演算結果 result として返します。
このとき浮動小数点数は整数に丸められます。
たとえば、次に示す式では、変数 A (演算結果 result) の値は 5 になります。
A = 19 Mod 6.7
んで、整数への丸め処理だけど、小数部分がちょうど 0.5 のときは
「最も近い偶数」に丸めるはずなので今回の 2.5 は 2 になるから
5 mod 2.5 の結果は 1 が返ってくる。
>>859 落ちとは?
ぐぐればわかる話じゃないのか?
virtualboxでいいじゃn
863 :
853 :2008/09/06(土) 00:22:38
ソースをそのまま貼り付けてしまってもOK。 半角スペースは表示上では削られますが、 2chブラウザ「Jane」のアンカー等によってポップアップされたレスを見ると インデントが残った状態で表示されるので、ポップアップからコピーすると インデントされた構造を維持したままテキストデータを取り出せます。お試しあれ。
864 :
853 :2008/09/06(土) 00:23:25
865 :
デフォルトの名無しさん :2008/09/06(土) 00:27:05
>>861 860さんのと同意見です。
ここのスレ(サーバーの反応が)遅かったり早かったりするから難しいんですよ。
「銀行の丸め」が、シャレかと思ったんです。で、落ちがあるのかと
>>865 まじめに答えたのに何がシャレだ?オチだ?
難しいとは何だよこの野郎ふざけんな
867 :
デフォルトの名無しさん :2008/09/06(土) 00:37:39
'実験結果は以下の様になりました。(VB6.0仕様) Dim a As Long, b As Long, c As Long Dim af As Double, bf As Double, cf As Double Dim av As Variant, bv As Variant, cv As Variant a = 19: b = 6.7: af = 19: bf = 6.7: av = 19: bv = 6.7 c = a Mod b cf = af Mod bf cv = av Mod bv Debug.Print "C=" & Format(c) & ",CF="; Format(cf) & ",CV=" & Format(cv) '実行結果 'C=5,CF=5,CV=5
VB5、6の仕事しかやったとこがない31歳。 何歳まで現役でいれるんかな・・・
870 :
デフォルトの名無しさん :2008/09/06(土) 00:42:44
>>866 悪かった。まさか銀行員とふんで返事しているとは思わなかったのよ。
明日も仕事なんでこのへんで勘弁して。ごめんなさい
銀行員?何の話だ? お前だけが明日仕事だと思うなよ 何がしたかったんだ?こいつ
872 :
デフォルトの名無しさん :2008/09/06(土) 00:52:35
873 :
848 :2008/09/06(土) 10:15:57
>>860 やっぱ5 Mod 2.5はVBAと同じで1なの?
tp://msdn.microsoft.com/ja-jp/library/se0w9esz(VS.80).aspx
こちらを読んでVBは違うのかと思ったよ。
874 :
848 :2008/09/06(土) 10:17:58
>>830 さん どうもです。
バッチ作成するプログラムですか???
その前に一つ気になりますがForのカウントアップを遅らせるためにSleep関数
みたいなことをしようと思っていたんです・・・
でもコマンドだと??ど素人ですみません・・・
やけに盛り上がってんな・・
>>873 そこは.NET 2002以降だから、6以前と異なっていても不思議ではない。
878 :
デフォルトの名無しさん :2008/09/06(土) 14:24:11
VBの関数呼び出しが全く分かりません。誰か教えて戴けませんでしょうか? C では // 関数の定義 void abc(void) // メインルーチン void main(void) { abc(); // 関数名 } void abc(void) { --- } 上記をVBでは、どの様に表現すれば良いのでしょうか? 素人な質問で申し訳ありませんが、宜しくお願いします。
>>878 基本的に最初にフォームが1つ作られた状態で始まるのがデフォルトになっている。
ただ、Cでやらかすvoid main()から開始されるプログラムと
ほぼ同じ形にしたい場合は、(Form自体も自分でこさえていく形)
VB6.0以前のスレなので、とりあえずVB6.0で動作する方法を紹介してみる。
・新規作成する。
・最初に用意されているformを解放する。
・標準モジュールを一つ作る。
・標準モジュールの中に『Sub main()』と記述する。
バッチだとsleepコマンド
881 :
デフォルトの名無しさん :2008/09/06(土) 15:12:35
882 :
デフォルトの名無しさん :2008/09/06(土) 18:24:33
>>878 VBにはプロトタイプ宣言はありません。
(DLLの関数を呼び出す時にDeclareと言うのを使いますが別の話です)
プロジェクトの新規作成を終えたところから話します。
プロジェクト(P)→標準モジュールの追加(M)で標準モジュールをプロジェクトに追加します。
プロジェクトとはmakeファイルみたいなもんです。
標準モジュールがCの「ファイル」に近いです。フォームは「ウィンドウ付きのクラス」です。
名前がModule1になっているので好きな名前に変えてください。
そこにPrivate Sub Main()〜Abc〜End Sub を書いてください。Privateはexternじゃないみたいなもんです。
プロジェクト(P)→Project1のプロパティ(E)で、「スタートアップ」を
Form1からSub Mainに変えてください。ついでに「プロジェクト名」も適当に変えてください。
Form1はいらないので、右クリックして「開放」で切り離してください。
Mainと同じ標準モジュールにPrivate Sub Abc()〜End Subを書いてください。
(大きなプログラムなら他のモジュールに書いたりするのはいうまでもありません)
Abc の中には MsgBox "Hello, World!" とでも書いておいてください。
F5か実行(R)→開始(S)でダイアログが出ればOKです。
保存するとModule1.basとProject1.vbpが保存されます。(名前を変えていないとき)
.vbwはいりません。どれもメモ帳で開けます。
コンパイルはファイル(F)→Project1.exe の作成(K)です。
exeの実行にはランタイムが必要ですが最近のWindowsには入っています。
ちなみにモジュール先頭にOption Explicitがあるときは「変数の宣言を強制する」文なので消さないでください。
長くなっちゃいましたが引かないでください。
883 :
デフォルトの名無しさん :2008/09/06(土) 18:28:29
長いついでに、voidはSubですが、 値を返したければFunction Abc() As Integer のように書いてください。 仮引数は(ByVal A As Integer)のように書いてください。 ポインタ渡しのようなことは ByRef と書いてください。 これくらいわかれば入門書等が読めるようになるような気がします。
うざ
885 :
デフォルトの名無しさん :2008/09/06(土) 20:16:23
スレちがいとはヒハンできないが たしかにわかりやすいが なんかビミョー
>>882 もう少し要点を絞った方が良い。
要らない手順の説明を省いてみると良い感じになるとは思うが。
C++等を理解している人向けの説明と、
初心者向けの説明が混同している所を改善してみると幾分か読み易くはなる。
887 :
デフォルトの名無しさん :2008/09/06(土) 20:50:53
>>883 Cの**はVBでは**との説明ですが
CとVBで互いに不能なことも簡潔な説明であれば聞きたい。
Best5で。 たしかに文が長すぎる。
土曜日だからいいだろ。なんかみんな引いてるみたいだし。
888 :
デフォルトの名無しさん :2008/09/06(土) 20:53:12
890 :
デフォルトの名無しさん :2008/09/06(土) 21:24:00
なんじゃこりゃ〜〜
>>887 言語仕様そのものが違うと言ってしまえばそれまでだけど、
C言語は制御プログラムとして優秀。
基本的にポインタを用いて他のプログラムを丸ごとくっ付けていく荒業が可能。
基本仕様には最低限の機能しか付いていないと解釈するか、
基本的な機能が全て付いていると解釈するかは人による。
全てのプログラムを無理矢理くっ付けるのが楽と言うのは絶大なメリットではある。
が、いかんせん取っ付き難いのと開発に時間が掛かってしまうのが難点。
プログラムの動作速度が速いので、大量の処理を要するプログラムを作る場合はコレしか使えない。
一方、VBは設計に重きが置かれている。
まず一つ目に、設計やデバッグのし易さ、短期間開発が可能と言うメリットがある。
しかし、
>>850 辺りに出ている様な、画像のコントロールの中で文字列を扱いたかったりすると
その分野に対して適正な状況に調整されているため、(画像はピクセル単位、文字はポイント単位)
結果から言って、方向性の違う分野との整合性が悪いと言うデメリットがある。
他にも、『String型とByte型配列の間でデータを移動させよ』と言うと、
VBプログラマの2〜3割は頭を抱えてしまうほど基本的なデータ型の定義が意外とめんどくさかったりする。
ただ、逆に知らなくても使えるのはメリットであると言える。
特に、デバッグのし易さは群を抜いている為、個人的には使い良い言語(?)だと思いますね。
892 :
デフォルトの名無しさん :2008/09/06(土) 21:37:37
>>891 お世辞でもいいから、最後の(?)ないほうが良くね
893 :
デフォルトの名無しさん :2008/09/06(土) 22:23:39
>>891 日本語の翻訳をするとは思わなかったが
C言語
言語仕様としては制御系
ポインタの概念があるので荒業が可能
基本仕様を利用してどこまで創れるかは技量しだい
とりくみにくいのと時間が掛かるのが難点
動作速度が速いので大量のデータが扱える
VB
業務用のシステム設計はやり易い
短期開発が可能
画像、文字列の概念をVBが処理するため
使いやすい反面、凝った処理は逆に手間がかかる
細かいデータ変換もVBが処理してしまうため
使用者がその知識がないまま使えてしまう
個人的には使い良い言語と思う
これであっってる?
間違っている
895 :
デフォルトの名無しさん :2008/09/06(土) 22:41:00
そっかー
10年前にやっとけって話だな、というのが正直な感想。
897 :
デフォルトの名無しさん :2008/09/06(土) 23:51:21
気分転換に だれか 無線メッシュネットワーク接続機器で安価な装置知りませんか?
VBにはVARIANT型とかいうわけ分からない型があるとかわけのわからない事逝ってる奴いるよな。 ほんと無知って怖いよね。
899 :
デフォルトの名無しさん :2008/09/07(日) 00:20:56
>>898 VB6でシステム組んでるの
そのLANのやりかえが必要なんで相談しただけ
無知は怖くない。 無関心な奴のほうがよほど怖い。 しかもこの業界はそんなアホが多い。 わからない仕事振られたら調べろ。ツテを頼ってでも聞け。掲示板に書き込め。 自分の仕事だという責任をちょっとは持ってくれ。 プログラムの解決方法なんて今は腐るほどあるやろ。 何もしない奴に限って、大変とか精神的に参ってるとかほざきやがる。 そんなやつ他業種にいってもクビだろ。マジ視ね。PCの前で固まるなら辞表書けクソヤロウ!!!
いやVB6って時点で終わってるんだが
902 :
デフォルトの名無しさん :2008/09/07(日) 00:52:09
メッシュネットワークで相談したかっただけなんですが
903 :
デフォルトの名無しさん :2008/09/07(日) 02:05:12
2CHが終わってるような
905 :
デフォルトの名無しさん :2008/09/07(日) 02:48:22
>>900 感同上
敬語どころか日本語もまともに使えない奴がギャーコラ喚くな!疎っとうしい!
VB6で終わっていると思うのなら、わざわざ書くな!
ここで会話している人間がVB6しか出来ないと思っているなら大間違いだ!
>>905 終わってるな
さすがVBしかできない人間だね
907 :
デフォルトの名無しさん :2008/09/07(日) 04:19:31
>>906 なんでそう言い方するかね
Del と JAVAscp はいまいちなじめない
PHP と Perl はなんとなくやっちまう
JAVAsv は クラスになかなかなじめなくて
C は好きだけど時間がなかなか
COBOL はOK VB は最近目がついていかない
Ruby はここのところ遠ざかってる
背伸びしちゃって 結局VBしかできないんでしょ? こんなとこで見栄張ってどうするの?終わってるよね?
C#もできるよ!
910 :
デフォルトの名無しさん :2008/09/07(日) 04:51:52
頼むよ 事実は事実。嘘はついてません
911 :
デフォルトの名無しさん :2008/09/07(日) 05:04:50
そりゃAS400のRPGもやったよ これ以上言ったら個人情報漏洩だぞ シャットダウンです
またあの50過ぎの死にぞこないか。
913 :
デフォルトの名無しさん :2008/09/07(日) 06:52:57
あたり 内容みりゃわかるわな
914 :
891 :2008/09/07(日) 11:24:33
>>892 言語と言うよりはインタプリタに近いという表現の方が適切だと思いつつ、
インタプリタと言う言葉が出てこなかった。気に障られたならスマソ。m(_ _)m
>>893 VBの方に追加。
・デバッグに掛かる時間が非常に短い。
・データ変換を厳密にやろうとすると煩わしくなる。
VBのよさは生産性に尽きるだろうな。 苦労して作ったAPPは当然業務上必要なものだろうが、 目の前でちょこちょこっと100Stepとかで作った補助ツールの方がユーザーには100倍喜ばれたりするもんだ。 コミュニケーションを図れる→頼られる→安定した仕事 となりやすいと思ふ。 まあエンドユーザーとの間にシステム部門を挟まない場合だが。
916 :
デフォルトの名無しさん :2008/09/07(日) 15:08:56
>>914 に準じて
VBって完全なインタプリタでもなく、完全なEXEでもなく、中間コードを作成して
VBRuntimeの上で動作するって、この中間コードって何なんでしょう?
ぐぐれ
918 :
デフォルトの名無しさん :2008/09/08(月) 22:28:33
ぐぐってみましたが vbで作成したEXEをRuntimeなしで実行出来るようにコンパイル できるツールはないんでしょうか?
ない。
Delphiで作り直す
921 :
919 :2008/09/08(月) 22:38:29
というかVB6は既に終息した製品なんで、あきらめろ。だいたいクラスもろくに使い物にならない 言語なんてコピペの山を築くだけで生産性とか関係ないから。
922 :
デフォルトの名無しさん :2008/09/08(月) 22:55:52
はい。有難うございます。といっていいのかどうか。理解はしました。
923 :
デフォルトの名無しさん :2008/09/08(月) 23:03:30
VBscriptでプログラム(コマンドラインツール)の実行をしてテキストにあるコマンドを読み込ませたいのですがうまく出来なくて悩んでおります。 Option Explicit On Error Resume Next Dim objWshShell Dim strCmdLine Set objWshShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then strCmdLine = "C:\Program Files\○○○\○○○.exe @ D:\TEST\oraSQL.txt" objWshShell.Exec(strCmdLine) If Err.Number = 0 Then WScript.Echo strCmdLine & " を起動しました。" Else WScript.Echo "エラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objWshShell = Nothing ○○○.exeをフルパス指定で起動してテキストを流すといった様にやっています・・・ でもプログラムは立ち上がれどテキストのコマンド発行が何故か出来ません。 実際に手作業でテキストから発行させるときも環境変数の設定をしていない(したくない?)のが原因ですが行う動作としては、 コマンドプロンプトを立ち上げcd /d C:\Program Files\○○○とディレクトリを変更して ○○○.exe @ D:\TEST\oraSQL.txtとしないとコマンドが発行されません。。。。 どうしたらよいのでしょうか?
925 :
デフォルトの名無しさん :2008/09/08(月) 23:35:15
>>920 パンチミス
Delphiならできますか?
Delphiなら特別にランタイムを必要としない実行ファイルを作れるかってこと?それは可能。
927 :
デフォルトの名無しさん :2008/09/08(月) 23:51:43
>>926 あ、そうなんですか
やってみようかな。
delphiいいでー
930 :
デフォルトの名無しさん :2008/09/09(火) 00:09:00
>>929 スレちがいはわかる。
でも、いいんではないの、それくらい。
花火大会みたいな。
ふむ。そだな。
>>924 とりあえず、
>cd /d C:\Program Files\○○○とディレクトリを変更して
>○○○.exe @ D:\TEST\oraSQL.txtとしないとコマンドが発行されません。。。。
と、云う状況で再現できているなら、
スクリプト内で、それ同様にコマンドを発給してみて下さい。
cdが指定されていない場合、作業フォルダが必要な処理はcdを設定しないといけなかった様な気が…。
932 :
931 :2008/09/09(火) 01:10:31
動くかどうか解らないけど。考えられる要素をもう一つあげてみる。
>>924 ×strCmdLine = "C:\Program Files\○○○\○○○.exe @ D:\TEST\oraSQL.txt"
○strCmdLine = "C:\""Program Files""\○○○\○○○.exe @ D:\TEST\oraSQL.txt"
933 :
デフォルトの名無しさん :2008/09/09(火) 01:57:41
>>931 ちょっと頭、良すぎ
質問者と一度会話してみては?
通じるのなら何も口出しはしませんが。
こないだの質問と同じではないの
我々は一般市民なので
またキチガイの50代の爺か
935 :
デフォルトの名無しさん :2008/09/09(火) 10:27:16
すみません、質問ですが、 vbpファイルをテキストで開いたとき、 Object={…}1.0#0; hoge.OCX のような表記がありますが、この括弧内の"…"は パスか何かなのでしょうか? 環境変数とかは変えた覚えがないのですが、 同じObject={…}の表記があるVBプロジェクトを開こうとすると ファイルが読み込めませんという表示がされます。 ちなみに読めない表記があるocxファイルはsystem32に 恐らく入っているファイルです。 ちなみにプロジェクトは自作ではなく他人が作ったもので 経緯ははっきりしませんが、ちょっと前までは読めないという 表示は出ず、同様のvbpは正常に開いていました。 多分、何某かのパスがいつのまにか変更されているとは思いますので Object={…}がパスであればそのパスの表記か何かを変更しようと 思うのですが、"…"が何の表記を表しているのかどなたか よろしければ御回答お願いいたしますm(_ _)m ちなみに使用しているのはVB6.0 sp5です
>>935 CLSIDのことか?
開けないってことはレジストリにそのファイルが登録されてないんだろjk
regsvr32
938 :
デフォルトの名無しさん :2008/09/09(火) 19:45:25
>>934 おいおいおい、何でもかんでも俺にふるな。
シニぞこないはいいけど、キチガイは勘弁してくれ。
最近良い子でいるんだが
939 :
デフォルトの名無しさん :2008/09/09(火) 21:26:49
>>938 の追記
VB6のスレでVB6は終わりだ。と言ってるの見たら、そうだろうと思うしかない。
だもんで、50爺は退散
>>924 です。
有難うございます。出来ました。
何度も何度もやったのですが結局出来たのはこれです。
strCmdLine = "cmd.exe /c (cd /d C:\Program Files\○○○\) & (○○○.exe @D:\TEST\oraSQL.txt)"
でもこれで出来るんですけどやたらPC重くなりエクスプローラで「応答なし」になるんですよね・・・
なんでだろ???
941 :
デフォルトの名無しさん :2008/09/09(火) 23:49:50
やっちまったなー
942 :
デフォルトの名無しさん :2008/09/10(水) 21:24:10
さすがにそこから先はスレ違いじゃないか?詳しくはわからんが
ですよね・・・ でも書く場所はわからないでつね・・・ とりあえず善しにして置きます。
面倒だからsendkeysでやっちゃえよ
pythonで書き直す
色んなAPIを使い倒す
キーボードをドライバレベルでキー送信したいのですが、参考となるWebページや 手順等御座いますでしょうか。 どうか宜しくお願いいたします。
948 :
デフォルトの名無しさん :2008/09/11(木) 19:34:44
949 :
デフォルトの名無しさん :2008/09/11(木) 20:49:04
よろしくお願いします 開発言語VB6(SP5) 実行環境WinXPpro SP2です。 プログラムの実行状況を記録するために 下記のようなログを記録するサブルーチンをプログラムに組み込んでおります。 Sub LogRec(logFileName As String,pgmStatus As Long) Open logFileName For Append As #1 Print #1,"Status=" & Hex(pgmStatus) Close #1 End Sub 上記サブルーチンを5分毎に呼び出すようにプログラムしています。 同様のサブルーチンを組み込んだプログラムが3本あり、 3本のプログラムは非同期ですが、同時に24時間運用で実行され並行処理しています。 ある日のことですが、その3本のプログラムが異常動作をしました。 原因を解析するために、残されたログファイルを見ると、3本とも最後にNull文字(Chr(0))が20〜50バイトほど埋められた形で残っていました。 個人的にはOSかVB6ランタイムの異常ではないかと思うのですが、このスレの住人の皆様の見解をお伺いしたいと思います。 なお、この症状は1回限りで再発していません。
おもいっくそ仕事の課題じゃないか
951 :
デフォルトの名無しさん :2008/09/11(木) 21:25:57
>>949 もしも、このソースの通りならまずいよ。
5秒ごとに3本が繰り返し動作していて #1 固定はない。
最低でも FreeFile を使用しないと。
非同期ならなおさら
952 :
デフォルトの名無しさん :2008/09/11(木) 21:32:17
あ違う。5分ですね。 だから、めったに症状が発生しない。
953 :
949 :2008/09/11(木) 21:32:25
>>951 すんません
要約して記載しました
実際にはFreefileを使っています
954 :
デフォルトの名無しさん :2008/09/11(木) 21:39:58
>>953 そりゃ要約しすぎ。
この手を本気で相談したいなら妙に小細工されたら
こちらも時間の無駄だ。
>>949 同時にその処理が発生した時にどこにデータが書かれるか考えれば原因は解る。
因みに、OSやVB6ランタイムで発生したエラーではなく、
コードの書き方が根本から間違っている為に発生したエラーです。
てか、ヘルプファイル(Openにカーソル合わせてF1押してみて)にまんま乗ってるんだが…。orz
>>954 すみません
全文をそのまま載せると冗長な部分が多いので、かいつまんで要約させていただきました。
具体的にお聞きしたいことは
・ファイルのOpen/Closeを繰り返すことには問題がないか?
・Print #ステートメント関連で、何か不具合情報があるのか?
(というか、この古いスタイルの文法を使用していても問題が無いかどうか)
ということです
>>955 もちろんログファイルの名前は全て異なっております
>>947 はどうせDirectInputのゲームのチートツールでも作りたいんだろ
こういう子は放っておいた方がいいよ
下手に教えると不正行為や業務妨害の幇助になりかねないし
つーか、VBしか使えない癖に、DirectInputを騙くらかすツール作ろうなんて烏滸がましいにも程があるw
>>956 ここで「問題ない」って言われたら君は納得すんの?
959 :
949 :2008/09/11(木) 22:21:35
>>958 > ここで「問題ない」って言われたら君は納得すんの?
いえ、そうではなくて、何か問題をご存じなら、教えを乞いたいと願ったわけです。
いきなりリセットかかってチェックディスクが走ったりすると0で埋まってるように見える可能性はあるがな
VB6に限っても全世界で10年使われてるわけで、 普通に考えればファイル操作のような一般的な仕事で問題があるなら とっくに修正されているか、すくなくとも問題の所在そのものは明らかになってるでしょ。 949のコードのバグと考える方が自然だ。 949のここでの不可解な行動(まるで壊れた車と別の車を持参して修理しろ、といっているようだ) だけ見ても疑うに足る理由だ。
962 :
デフォルトの名無しさん :2008/09/11(木) 22:37:08
>>956 なんか様々な意見があるので微妙ですが、
とりあえず
その方法で Open/Close を繰り返しても問題ないでしょう。
古いスタイルでも、よほど凝ったことをしないと誤動作はしません。
作り方に問題があると思います。
オープンにしてもらえない限り、これくらいの返答しか出来ません。
963 :
デフォルトの名無しさん :2008/09/11(木) 22:42:08
>>957 すまん。こちらの無知だろうが、漢字が読めん。
964 :
949 :2008/09/11(木) 22:54:09
>>961 いえ、たいしたコードではないので、バグの可能性は少ないと思います
しかしながら既知の問題点があるかもしれないと思い、導入後3年以上経って発生した問題の結論を模索するために質問させていただきました。
3年間立ち上げっぱなしのPCなので、OSのせいにしてしまいたいところが正直なところです
ご解答いただきました皆様、誠にありがとうございました。
キチガイだなこいつ お前も50歳なのか?
966 :
デフォルトの名無しさん :2008/09/11(木) 23:28:34
そういう業務についてて困ってる子はこの世界に不慣れなんだよ 二度と俺にふるな
969 :
デフォルトの名無しさん :2008/09/11(木) 23:47:24
スレ違いの優等。どっか行けば レッスラ誤o 早く行きなさいね。
>>964 まあまあまあ、お前がそのコードにバグがある可能性が少ないと思うのと同じように、
俺はWindowsやVBにバグがある可能性は低いと思ってしまうわけだ。
まだどっちとも言えないけどさ。
>>949 何と言えば良いか解らないが、何故かエラートラップしないんだな。
原因は何となく解る気がするのだが、そのソースからその原因が解らない以上、答えられない。
解を求めるならば、もう少し掘り下げてくれると嬉しいが、無理しない程度に頼むわ。
守秘義務違反に引っ掛かるのも本末転倒だしな。
一応、以下については不具合の情報は無いみたいですぞ。
>・ファイルのOpen/Closeを繰り返すことには問題がないか?
>・Print #ステートメント関連で、何か不具合情報があるのか?
たぶんHDDの故障だと思う。ソフトウェア屋はなぜか ハードは疑わないんだよなぁ
例の粒子加速器の影響じゃね?
>>972 よく人に頭悪いねって言われるでしょう君って。
VB6っていつまで続くんだろうね 自分、都内零細製造会社に勤める三十路のカス設計者(PG、デジタル回路)で シリアル通信のプログラム作るのにVB6使わせてもらってるんだが 俺みたいな学生の時少しやってたレベルがVB6でプログラム作って売っていいもんだかジレンマに苦しむ(製品のオマケレベルだが・・・ .NET、2005も使ってみたが、過去の遺産と生産性考えると、うちの会社じゃ6の方が断然コスト良いんだよねぇ・・・ 「始めてのオブジェクト☆志向」みたいな本読んで 打ちひしがれている場合じゃないな・・
.NETでVB6風に書くのがいちばんおかいどくだろう。#はだめよ。レガシー機能がない。
977 :
975 :2008/09/12(金) 21:27:19
>>976 Verilog、SystemCとかファームウェアにも接する機会があるんですが、
RTLレベルの無駄無いPG見て、たまに「俺何やってるんだろ」って思うんですよね・・・
純粋なソフト屋さんで喰ってけるようにCの勉強もう一度やり直します。。。
>>977 「純粋」なソフト屋で食っていくなら、需要の多い言語やOSの勉強するべきだろう。
今は昔になる業界なんだから、需要に沿って渡り歩くのが長生きするコツじゃね。
そうむ みたいにUNIXオンリーってとこで働けたらそりゃしあわせだわ。
980 :
デフォルトの名無しさん :2008/09/14(日) 01:23:57
カス設計者 の表現は 良くない。と、思う。
981 :
デフォルトの名無しさん :2008/09/14(日) 11:39:10
お通夜か?
982 :
デフォルトの名無しさん :
2008/09/14(日) 11:49:58 >>975 ここは人生相談の場所じゃない
しかし、かなり悩んでいるようなので少しだけ
言語は関係ない。自分のやりかたでやればいい!