VBプログラマ質問スレ(6.0以前) Part54at TECH
VBプログラマ質問スレ(6.0以前) Part54 - 暇つぶし2ch1:デフォルトの名無しさん
08/03/03 23:03:01
ここは Visual Basic ~6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

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

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

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

MSDN Online Japan ホーム
 URLリンク(www.microsoft.com)
Visual Studio 6.0 Service Pack 6
 URLリンク(msdn.microsoft.com)
Google
 URLリンク(www.google.co.jp)

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

2:デフォルトの名無しさん
08/03/03 23:03:29
前スレ
VBプログラマ質問スレ(6.0以前) Part53
スレリンク(tech板)

なかなか立ってないから立てた。反省はしていない

3:デフォルトの名無しさん
08/03/03 23:30:58
>>1


4:デフォルトの名無しさん
08/03/07 10:35:20
本スレage

5:デフォルトの名無しさん
08/03/07 15:20:23
VBでおすすめの本は?

6:デフォルトの名無しさん
08/03/08 15:11:26
>>5
VB6なら「ピーターノートンの手解きVisual Basic6」
Vol1とVol2の2巻あるが、初心者でも無理なく理解できる丁寧な解説と、
上級者でも満足できる高度な内容を両立させている上に他のVB本には
記載されていない事も説明がある。サンプルCDも付いているし、この2冊で
充分VBマスターになれる。

7:デフォルトの名無しさん
08/03/08 16:01:17
>>5
ピーターノートン
URLリンク(www.amazon.co.jp)
URLリンク(item.rakuten.co.jp)
URLリンク(auction.item.rakuten.co.jp)
URLリンク(page9.auctions.yahoo.co.jp)

8:デフォルトの名無しさん
08/03/10 16:50:20
>>5
ゲームとか作るんだったら
古い本だけど
Visual Basicビジュアルプログラミング実践テクニック
結構お勧めできるかも
大昔にゲーム系の専門でPGの講師してたときに使ってた本
ビジネスアプリだったらぜんぜん意味無いが

9:デフォルトの名無しさん
08/03/12 23:00:28
すいませんが質問させてください
FTP接続に関する質問です。
FTPでデータを転送したく、いろいろ調べた結果、転送まではできるようになりました
しかし、以下のことができません。
Aのデータを送って、正常に送れたのを確認してからBのデータを送る
問題点
データ量が大きくなる(転送データが増える)と回線の状況による速度の影響で
一定時間で見るのは難しいです(効率も悪い)

たぶんAのデータがすべて送りきれているか確認できればいいと思うのですが可能ですか?
ほかにいい方法があれば教えてくれれば嬉しいです。よろしくお願いいたします。

10:デフォルトの名無しさん
08/03/12 23:41:21
>>9
つか、シーケンシャルに処理すれば良い希ガス

11:デフォルトの名無しさん
08/03/13 10:01:14
>>9
よくわからないけど
Aのデータを送信
  ↓
FTPで最新リストを取得して送信元データとサイズを比較 → 違うなら再送信
  ↓
同じなら成功したとする
とかはできないの?

12:デフォルトの名無しさん
08/03/13 19:49:43
zipファイルの圧縮はどうすれば可能でしょうか?
.netは見つかったのですが6.0では見つかりません。
ちなみに普通に解凍は見つかりました。
UNZIP32.DLL
ですが、やはり使用しないと無理なのでしょうか?
どうかその方法を教えてください。(txtをまとめて圧縮さえできればいいです)
よろしくお願いいたします

13:デフォルトの名無しさん
08/03/13 20:58:00
>>12
UNZIP32.DLLは解凍で
圧縮はZIP32.DELLだったような。
VB6は標準でZIP圧縮、解凍というメソッド等は持たないので
ZIP32.dllあたりからメソッド呼び出す必要があったはず。


14:デフォルトの名無しさん
08/03/13 21:00:23
質問です。
1: Public Sub test
2: dim x as integer
3: x=0
4: End Sub

変数xのメモリが実際に確保されるのは
2行目でしょうか?
3行目でしょうか?


15:デフォルトの名無しさん
08/03/13 21:39:38
気にしなくていい

16:デフォルトの名無しさん
08/03/14 09:57:25
>>12
総合アーカイバ プロジェクト
URLリンク(www.csdinc.co.jp)

ここの「開発室」を見てみ?

17:12
08/03/15 00:09:31
>>13,16
ありがとうございます
がんばってみます

18:無償入手可
08/03/15 13:00:48

Visual Basic Version 5.0 Control Creation Edition SP2 日本語版
URLリンク(download.microsoft.com)

Visual Basic 5.0 Control Creation Edition: SP2 ヘルプ ファイル
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)

Visual Basic Version 5.0 Control Creation Edition: レジストリ修正モジュール
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)

Visual Basic 5.0: RecentFiles ツール
URLリンク(www.microsoft.com)
URLリンク(download.microsoft.com)


19:デフォルトの名無しさん
08/03/15 14:09:52
コピペ君って馬鹿だな、まで読んだ。

20:デフォルトの名無しさん
08/03/15 16:04:28
「馬鹿は、人を馬鹿呼ばわりする」まで読んだ。

21:デフォルトの名無しさん
08/03/15 16:36:05
かわいそうだから全部読んだ

22:デフォルトの名無しさん
08/03/16 15:35:22
文字コードで質問があるのですが
VBの内部コードはUnicodeということですが
buf = "1,2,3,4"
Open strPath For Output As #FileNo
Print #FileNo, buf
Close #FileNo

で書き込んだファイルがシフトJISになるのはなぜでしょうか?


23:デフォルトの名無しさん
08/03/16 15:49:49
仕様です

24:デフォルトの名無しさん
08/03/16 17:31:57
>>23
レス有難うございます。これはVB6の仕様ということでしょうか。
Windows Vistaでは文字コードの規定値がUnicodeになるようですが
VB6で>>22のようなコードで作成したファイルは
やはりシフトJISになるのでしょうか?

25:デフォルトの名無しさん
08/03/16 17:33:30
そのコードではそうなる

26:22
08/03/16 18:00:30
>>25
ということはシフトJISになるのはPrintステートメントの仕様ということでしょうか。
たしかにStrConvでUnicodeに変換した文字列を書き込んでもシフトJISになりますね・・
Writeステートメントでも同様のようです。


27:デフォルトの名無しさん
08/03/16 18:33:22
>>26
バイナリで作って書き込めばUNICODEで保存できたはずだが?

28:デフォルトの名無しさん
08/03/16 22:00:40
シフトJISで出力される仕様だなんて聞いた事もないので
試しにAppLocaleで切り替えてみたらやはりシフトJIS以外で出力された
UTF-8には切り替えられないので意味無いが

29:22
08/03/16 22:19:53
>>27
Open strPath For Binary Access Write As #FileNo
Put #FileNo, , buf
Close #FileNo
でもUnicodeにならないのですがこれって端末の環境が関係してるんでしょうか?
バイト配列でも同じでした。

>>28
要はVista端末で実行しようがシフトJISで出力したいということなのですが
>>22のコードは修正する必要があるでしょうか?


30:デフォルトの名無しさん
08/03/16 23:02:53
>>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:デフォルトの名無しさん
08/03/16 23:38:59
質問者も回答者もぐぐらないカスばかりだな

32:14
08/03/16 23:46:19
>>14
↑誰かご存じの方いませんか?

33:デフォルトの名無しさん
08/03/16 23:48:18
どのタイミングで実際にメモリが確保されるかとか保証してるのかな?
遅延可能なら遅延しそう。
でも、動作が変わるような遅延はしないと思う。

34:デフォルトの名無しさん
08/03/16 23:57:22
マジレスすれば、1行目。

35:14
08/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」と表示されたのでいろんな意味上の方にまとめて
宣言した方が可読性あがるしよさげですね。
賛否両論あるかもしれませんが。


36:デフォルトの名無しさん
08/03/17 00:33:16
オブジェクト変数だけ遅延されるのは十分ありえることだと思うけど?
ありえることとそうであることは違うけどね。

37:デフォルトの名無しさん
08/03/17 02:26:07
変数とインスタンスの区別ができないバカw

38:22
08/03/17 02:43:19
>>30
有難うございます
そのようにコーディングしてもSakuraなどのエディタでは
なぜかSJISと表示されますね・・・。

ここにもバイナリで開いてPutで書き込むといけたと書いてあるのですが
なぜか当方の環境ではうまいこといきません・・・
h URLリンク(www.accessclub.jp)


39:14
08/03/17 03:10:30
>>36
ありえること、ですか。
確かにそう言われるとそうかもしれませんね。
VBのクラスの実装はなんか他のと比べて
特殊なところありますし。
わかりました。
ありがとうございます。

>>37
変数がインスタンス化するタイミングについて討論してるのに。

40:デフォルトの名無しさん
08/03/17 08:27:10
>>39
37じゃないけど、Nothingと比較ができる型の意味分かってないんじゃないの?
いずれにせよ(インスタンス生成の遅延以外は)くだらない議論だよ。

シュレディンガーの猫は最終的に猫の生死を確認する方法があるから意味があるのであって、
それが事実上ないVBでのそんな議論に何の意味があるw

41:デフォルトの名無しさん
08/03/17 10:03:28
>>39
組み込み型では、インスタンス化とは言いません。

42:デフォルトの名無しさん
08/03/17 11:47:26
22のコードは日本語環境だとShift_JISで出力され、
22はShift_JISで出力したいと言っている。
一体どこに問題がある?

43:デフォルトの名無しさん
08/03/17 12:21:35
変数宣言してないとき(必須にしてる時)に、デバッグモードで先頭行に
カーソルはあると思うが・・・

44:デフォルトの名無しさん
08/03/17 13:02:43
プロセスにアタッチして、ディスアセンブルすればわかるかもよ

45:デフォルトの名無しさん
08/03/17 20:52:01
>>38
たしかに俺もウソソースを書いた。
けどすべての答えが出てたんだから自力でなんとかしてほしかった!
Dim strPath As String
Dim buf As String
Dim buf2() As Byte
Dim buf3(0 To 1) As Byte
Dim fileno As Integer
fileno = 1
buf = "1234"
buf2 = buf
buf3(0) = &HFF
buf3(1) = &HFE
strPath = "C:/test.txt"
Open strPath For Binary As #fileno
Put #fileno, , buf3
Put #fileno, , buf2
Close #fileno


46:デフォルトの名無しさん
08/03/17 23:20:39
未だにOpenステートメントを使う石器人がいるとは…

47:14
08/03/18 01:15:40
>>40
Nothingと比較ができる型ってつまり
値型と参照型の話ですよね?
大丈夫と思います。

>>41
そうなんですか、知りませんでした。
ありがとうございます。
値型の変数を保存するために実際にメモリ上に領域が確保されることをなんと言うのでしょうか?

48:デフォルトの名無しさん
08/03/18 06:33:25
オブジェクト型の変数にオブジェクトのインスタンスが格納されると思っているなら間違いだよ

49:デフォルトの名無しさん
08/03/18 19:06:10
>>46
お前はVB6以前のスレで何を馬鹿なこと言ってるんだ

50:デフォルトの名無しさん
08/03/18 20:14:26
>>49
>>46 は、FileSystemObject ぐらい使えとでも言い鯛のでは?

51:デフォルトの名無しさん
08/03/18 20:58:40
FileSystemObjectでUNICODEを保存するソース


52:今日も雲弧 ◆bKaGbR8Ka.
08/03/18 22:59:41
VBSで質問があります。よろしくお願いします。(ペコ

IF文の部分でobjDic11とobjDic12のItemを書き換えました。
IF文の部分では書き換わっているのに、ループを抜けた後に
再度objDic11を参照すると書き換え前の状態なのです。

どこが悪いのでしょうか?何故こうなるのでしょうか?
お教え下さい。

以下にコードを4分割して貼ります。



53:今日も雲弧 ◆bKaGbR8Ka.
08/03/18 23:01:02
Sub RankMark
'On Error Resume Next
Const UpTo_Soutou = 2500
Const UpTo_Gensui = 2000
Const UpTo_Taisyou = 1750
Const UpTo_tyuujyou = 1500
Const UpTo_Syousyou = 1250
Const UpTo_Jyunsyou = 1000
Const UpTo_Taisa = 950
Const UpTo_tyuusa = 800
Const UpTo_Syousa = 650
Const UpTo_Taii = 500
Const UpTo_Tyuui = 400
Const UpTo_Syoui = 300
Const UpTo_Soutyou = 200
Const UpTo_Gunsou = 150
Const UpTo_Gotyou = 100

'まずRANKとMARKのobjDicStarsを作る

Set objDicStars = CreateObject("Scripting.Dictionary")
Set objFS3 = WScript.CreateObject("Scripting.FileSystemObject")
Set objFile3 = objFS3.GetFile("星.txt")
Set objTS3 = objFS3.OpenTextFile("星.txt")


54:デフォルトの名無しさん
08/03/18 23:01:40
必要最小限のソース貼れよ・・・

55:今日も雲弧 ◆bKaGbR8Ka.
08/03/18 23:01:53
Do Until objTS3.AtEndOfStream
strLine3 = objTS3.ReadLine
ArrayStars = Split(strLine3)
strRank = ArrayStars(0)
strMark = ArrayStars(1)
objDicStars.Add strRank,strMark
Loop
objTS3.Close

'名前のリストを取得してから辞書を操作する

ArrayRanksList = objDicStars.Keys
ArrayStarsList = objDicStars.Items
ArrayKeysList = objDic.Keys
ArrayItemsList3 = objDic3.Items
ArrayItemsList11 = objDic11.Items
ArrayItemsList12 = objDic12.Items

'MsgBox ArrayKeysList(0)
'MsgBox ArrayItemsList3(0)
'MsgBox ArrayItemsList11(0)
'MsgBox ArrayItemsList12(0)
'MsgBox ArrayRanksList(0)
'MsgBox ArrayStarsList(0)


56:今日も雲弧 ◆bKaGbR8Ka.
08/03/18 23:02:51
For i = 0 To objDic.Count - 1

If CSng(ArrayItemsList3(i)) >= UpTo_Soutou Then

strOldRank = ArrayItemsList11(i)
strOldMark = ArrayItemsList12(i)
objDic11.Item(strOldRank) = ArrayRanksList(0)
objDic12.Item(strOldMark) = ArrayStarsList(0)

MsgBox "昇進しました"
MsgBox ArrayRanksList(0)
MsgBox ArrayStarsList(0)
MsgBox objDic11.Item(ArrayItemsList11(i))
MsgBox objDic12.Item(ArrayItemsList12(i))

Else

MsgBox "あ"

End If

Next



57:今日も雲弧 ◆bKaGbR8Ka.
08/03/18 23:03:50
strRank = ""
strRank = objDic11.Items

For m = 0 To objDic.Count - 1
strTemp = strTemp & strRank(m) &vbcr
Next

MsgBox strTemp
MsgBox objDic11.Item("今日も雲弧")
MsgBox objDic12.Item("今日も雲弧")

End Sub


58:今日も雲弧 ◆bKaGbR8Ka.
08/03/18 23:05:10
>>54

申し訳ありません。必要最小限の部分すらわからないのです…。



59:デフォルトの名無しさん
08/03/19 17:57:26
>58
ものには限度があるだろうよ。

あのコードを見て、本質ではないと思われる行が一行も思い当たらない程度のレベルなら、
何をどこから説明して良いのやら見当も付かないよ。

60:デフォルトの名無しさん
08/03/20 01:34:51
すいません。質問です。
Windows xpのマシンにVB6はインストールできますか?

61:デフォルトの名無しさん
08/03/20 01:44:20
Linuxマシンならインスコできます。

62:14
08/03/20 03:42:03
>>48
いえいえ、
オブジェクト型の変数ってオブジェクトのインスタンスへの参照ですよ。
その話題くどいです。

>>60
できます。


で、本題は>>47の後半なんですけど
返事ないところを見るとオブジェクト型のインスタンス化とは違って
組み込み型には明確な名称ないのかな。



63:デフォルトの名無しさん
08/03/20 10:26:34
>>62
質問の仕方からいって明らかに分かってないだろw
なにがくどいだよ。
っていうか君がいう「本題」からして全然わかってないじゃん。
変数そのものが占有するメモリに関して組み込み型とオブジェクト型の区別
なんてあるかよ。

「本題」について言えば、「VBプログラマの視点での呼称」なのか「VBコンパイラ作者の視点での呼称」
なのかをまずはっきりする必要があるだろう。

「インスタンス化」とはVBプログラマ視点の言い方のような気がするから、
これに対応する言い方ということなら「定義」じゃないの?

コンパイラ製作者の視点で「変数定義」の実装法の呼び方についていってるのなら
それはVB作ったMSの人にしかわからんのじゃないの。
それに変数のスコープによっても実装法は恐らく異なると思うけど

64:60
08/03/20 11:26:51
>>62
ありがとうございます。
早速インストールしてみます。


65:14
08/03/20 14:45:46
>>63
変数そのものが占有するメモリに関して組み込み型とオブジェクト型の区別
については
どうなんでしょうかね。
少なくともオブジェクト型、というか参照型については
宣言される時ではなく、初回利用時にインスタンス化するみたいですね。
で、組み込み型はどうなのか、というのが今回の話題ですね。
一応オチとしては「初回利用時かもしれない」というオチで落ち着きました。

参照型:インスタンス化
だとして
組み込み型:定義?
ですか?
なんか変な気が。。

66:デフォルトの名無しさん
08/03/20 15:03:12
>>65
やっぱり全然分かってないね。
New付きで定義された変数について、初回利用時まで生成が遅延されるのは
インスタンスであって変数そのものではないだろう普通に考えて。

ちなみに「インスタンス化」という言葉が動詞だとして、それがとる目的語は
「クラス」または「型」であって「変数」じゃないと思うんだけど。
言い換えれば別に変数が「インスタンス化」されるわけじゃないぞ。

67:14
08/03/20 16:41:10
>>66
New付きで定義された変数について、初回利用時まで生成が遅延されるのは
インスタンスであって変数そのものではないですよ。
当たり前です。
私がわかってない方が都合いいですか?
ならそれでいいです。
わかってません、すみません。
これについてはここで終了してください。

以下を知りたいです。
参照型に対して「インスタンス化」ならば、
組み込み型に対しては何でしょうか?
「定義」という答えを頂きましたが的を得ている気がしません。
他の人の意見聞かせてもらえませんか?
やはり定義で正解でしょうか?

68:デフォルトの名無しさん
08/03/20 17:03:48
あーこいつどうしようもなく頭悪いなあ。。。
だから「参照型のインスタンス化に対応する組み込み型の概念は?」なんてのは
そもそも愚問なんだよ。そんなものはないんだから。

参照先が作られることを「インスタンス化」というのだから、
そもそも「参照先」という概念がないVBの組み込み型に対応する概念なんてあるわけないだろう。

そして変数そのもの作られるタイミングは組み込み型だろうが参照型だろうが
変わらないはずだ、と言っているのにこれも全然理解しようとしないなこの馬鹿。

69:デフォルトの名無しさん
08/03/20 17:06:30
というかVB6以前って「参照型」っていう呼び方したっけ?
そういう呼称が導入されたのはドトネト以降で、VBでの呼び方は「オブジェクト型」
だったような気がしたけど。

まあこれに関しては説明の便宜かもしれないし、「参照型」と言った方が
呼び方として適切だと思うからいいんだけど。

70:デフォルトの名無しさん
08/03/20 19:01:39
> 参照型に対して「インスタンス化」ならば、
いみがわかりません><

71:14
08/03/20 19:14:36
>>69
しないと思います。
オブジェクト型で正解。
ご想像の通り説明の便宜です。

>>68
確かにこれは答えないかもしれませんね。
ここまで追求する問題でもないので質問取り下げます。
ありがとうございました。

>>70
言葉足らずですみません。


次の疑問がわきました。
先ほどVBには参照先という概念はないとお聞きしました。
本当ですか?
自分の意見は「ある」です。
Dim cls1 As Class1
Dim cls2 As Class1

Set cls1 = New Class1
cls1.s = "test"
Set cls2 = cls1
Debug.Print cls2.s

cls2の参照先はcls1のインスタンスです。
だから「ある」に一票。

72:デフォルトの名無しさん
08/03/20 19:50:56
> 先ほどVBには参照先という概念はないとお聞きしました。
日本語ダメな人?

73:デフォルトの名無しさん
08/03/20 20:47:37
>>71
クラスはドトネトでいう参照型/値型でいったら前者だよ。
だからNothingと比較できるる型の意味を君は理解してるか、と最初から言ってるでしょ。

74:14
08/03/20 21:42:53
>>73
>クラスはドトネトでいう参照型/値型でいったら前者だよ
だーかーら
そんな当たり前のこと堂々といちいち書かない。
何が言いたいんですか?

それはさておき、
>>71についてどなたかご意見いただけるとありがたいです。
よろしくお願いします。

75:デフォルトの名無しさん
08/03/20 21:45:13
VBに参照先の概念が無いなんて誰も言ってないだろ
完全に読み間違えてるよ

76:デフォルトの名無しさん
08/03/20 22:08:29
>>74
75が指摘してくれてるけど>>68で「ない」と言っているのは
組み込み型の参照先だよ。

っていうか、君はその「当たり前」のことを全然理解してないのに
その自覚がないから馬鹿だっていうんだよ。

77:14
08/03/20 23:10:50
>>75
なるほど。

参照先が作られることを「インスタンス化」というのだから、 そもそも
「参照先」という概念がないVBの組み込み型
に対応する概念なんてあるわけないだろう。

こう区切ればよかったんですね。
ありがとうございましたー。


78:デフォルトの名無しさん
08/03/20 23:35:55
vsFlexGridのセルにに画像を表示させるにはどうしたらいいんですか?

79:78
08/03/21 00:02:10
自己解決しました

80:デフォルトの名無しさん
08/03/21 11:48:26
インスタンス化とは、オブジェクトの実体(インスタンス)を生成するプロセスのことを指す言葉。
これに対応する組み込み型の言葉は無い。しいて言うなら、アロケート(メモリ割付)か。
インスタンス化では、普通、メモリのアロケートとオブジェクトの初期化が行われる。
「オブジェクトの初期化」の中身は、言語によって異なる。

組み込み型の場合によく使われる「定義」という言葉は、「宣言」と対になる言葉。
英語では、definitionとdeclaration。普通は、前者はメモリのアロケートを伴う場合を指し、
後者は文字通り宣言のみを行う場合に使う。C/C++では、両者は明確に区別して語られる。

81:デフォルトの名無しさん
08/03/21 11:51:53
蛇足:的は射るもの

82:デフォルトの名無しさん
08/03/21 11:55:16
さて、ここでVBのヘルプを見てみると、

>Dim ステートメント
>変数を宣言し、メモリ領域を割り当てます。

と記述されている。素直に理解するなら、Dimステートメントが実行されたときにメモリが
アロケートされる、すなわち、Dimステートメントとは、変数「定義」だということになる。

83:デフォルトの名無しさん
08/03/21 16:00:52
>15
がFAなんじゃねーの?
それが問題になるようなコードはVBで書くべきじゃないし、
書かなきゃならないならVBを使うのは間違いってことだよ。

84:14
08/03/23 10:48:08
>>80
求めていた答えをいただけてすごくすっきりしました。
ありがとうございました。

85:22
08/03/23 23:47:03
>>42
亀レス&言葉足らずですみません。最終的にはVista環境でもシフトJISで書き込みたいのですが
元来内部コードをUnicodeでもっているはずのVBで>>22のように書いたら
シフトJISになるわけが知りたかったので・・・。

>>45
有難うございます、面目ないです。参考になりました。
色々調べた結果ADODB.StreamやFileSystemObjectも使えそうなので
試行錯誤してみます。

86:デフォルトの名無しさん
08/03/23 23:57:31
どうしても何も、VBが変換書けてるに決まってるでそ。
理由はUNICODEそのままで書いたら文句いう連中が
出るに決まってるから

87:デフォルトの名無しさん
08/03/24 23:54:10
VB6.0を使っています。OSはWindowsXPSP2です。
他人のソースをコピーしてプログラムを作りました。
生成したEXEをエクスプローラで並べて表示にして見て見ると、ファイル名の下に薄い灰色で
作者名らしきものが表示されてしまいます。
プロジェクトのプロパティの「実行可能ファイルの作成」タブで
バージョン情報の中にある、コメント、会社名などの情報は全て消したのですが、
EXEを生成し、生成したEXEをエクスプローラで並べて表示にして見た時に、
ファイル名の下に薄い灰色で作者名らしきものが表示されてしまいます。
こういった付加情報を表示しなくするにはどうしたらよいのでしょうか?

88:デフォルトの名無しさん
08/03/25 14:17:30
>>87 「他人のソースをコピーしてプログラムを作りました」
そもそも、これが間違いの始まり

89:デフォルトの名無しさん
08/03/25 15:20:43
>87
なぜかF5では更新されないね。
別のフォルダを選択して元に戻ったら直らないかい?


90:87
08/03/25 16:15:21
>>89
ご指示通り別のフォルダにexeを一度作成すると消えました。
ありがとうございました。

91:デフォルトの名無しさん
08/03/26 16:22:26
Option Explicit

Sub zzz()
Dim hoge(3) As Variant
Dim hogehoge As Byte
Dim z As Byte

For z = 1 To 3
For hogehoge = 1 To 3
hoge(z) = Range("A" & hogehoge).Value
Next hogehoge
Next z
End Sub

上のようなコードで、zとhogehogeを同時に
インクリメントすることは可能でしょうか?

92:デフォルトの名無しさん
08/03/26 16:52:47
「Next hogehoge」の前に
「z=z+1」を入れれば可能だけど
それは構成として間違ってるから

やりたいことを日本語で整理して、
それから考えた方がいいと思うよ。

93:デフォルトの名無しさん
08/03/26 17:35:03
おk

94:デフォルトの名無しさん
08/03/26 19:15:36
zいらんやん

95:デフォルトの名無しさん
08/03/26 22:21:41
VB6.0でZipファイルを圧縮する処理をVBSで作成しBatで起動するように
したのですが、なぜか1回だけZipと変な拡張子ないデータが作られ
12ファイルの内9ファイルしか圧縮されていませんでした。(原因不明)
そこでZipファイルの中身の件数のみを数えて数があっていれば圧縮を
正常に終了したとみなしたいのですが、可能でしょうか?
全て解凍すると時間がかかりますのでお願いいたします。
ちなみにvbsで起動したのはdllを使わないで圧縮ができたからです。
よろしくお願いいたします

96:デフォルトの名無しさん
08/03/26 22:29:24
日本語で話してくれないか?

97:デフォルトの名無しさん
08/03/26 23:28:04
そのうまくいかない原因を究明するほうがいいと思うぞ。
急がば回れって言うし。

あと、VBSでできるんだったら、VB6でも全く同じようにできる。
せいぜいWScriptオブジェクトがないくらい。

98:95
08/03/27 01:30:19
>>96
すいません
>>97
VBSはネットでフリーであったのでそれを使用しました。ゆえにVBへの記述方法
がまったくわかりません。
(検索はしましたがVB VBSやVB6.0 VBSなど)VBSとVBがかぶっているからか変換の方法が見当たりませんでした。
原因が現在わからないので困っています。今回初めて不具合が出たもので。
>>96
ファイルを圧縮するVBSをbatで動かします。そのbatはVBで作成しています。
作成したbatの起動も同じVBでしています。
batでは以下の記述をしています
CD VBSのパス
CScript.exe MakeZIP.VBS ZIPファイルのパスと名前 圧縮するtxtのパスと名前1 圧縮するtxtのパスと名前2 …
exit
ですこれをshellで起動しています。
しかし今回作成されたzipファイルには後ろに記述していた11ファイルの内9ファイルしか
圧縮されておらず。残りの2ファイルはzipファイル内に存在しませんでした。(zipファイルと同じフォルダに拡張子のないファイルが1つ作成されてました)
ファイル名が長いわけでも、特殊文字が使われているわけでもありません(パスも同じです)
そこで、圧縮が正常にできているかを判断したいと考えました
その方法として圧縮したファイル件数を調べることができないかを考えました。
よろしくお願いいたします

99:デフォルトの名無しさん
08/03/27 01:35:38
>>98
VBSはVBのサブセットなんだから、VBS→VBは
変換なんて考えなくても、そのまま一字一句変えずに使えると思ってもいいくらい。
まずは試してみたか?

100:デフォルトの名無しさん
08/03/27 01:38:53
コマンドラインの文字長には制限があったような気がするけど?

101:デフォルトの名無しさん
08/03/27 12:37:36
1ファイルずつ追加していけば

102:デフォルトの名無しさん
08/03/27 19:21:07
VBAのサンプルでも使えばよかろう

103:95
08/03/27 22:49:35
レスありがとうございます。
>>99
はじめにfunctionを入れてみましたがいまいちどう起動したら
よいのかわからずに挫折しました。(標準モジュールに追加?)
>>100
まったく同じデータ(パス)で行っています。


104:デフォルトの名無しさん
08/03/27 23:15:08
>>103
コマンドラインの文字長制限はそう言う意味じゃないよ

>CScript.exe MakeZIP.VBS ZIPファイルのパスと名前 圧縮するtxtのパスと名前1 圧縮するtxtのパスと名前2 …

とあるけど、例えば

CScript.exe MakeZIP.VBS c:\dirnameA\dirnameB\dirnameC\dirnameD\dirnameE\dirnameF\dirnameG\ZIPFile.zip c:\dirnameA\dirnameB\dirnameC\dirnameD\dirnameE\1.txt c:\dirnameA\dirnameB\dirnameC\dirnameD\dirnameE\2.txt (12.txtまで同じ事を繰り返す)

↑のような長ったらしいパスで使ってるなら途中で途切れて当たり前

CScript.exe MakeZIP.VBS c:\ZIPFile.zip c:\1.txt c:\2.txt (12.txtまで同じ事を繰り返す)

にしたら行けるかもしれない。それでも長いから途切れるもしれない
「CScript.exe」の後ろに続く部分が長すぎると途中で切れるってこと

よく送るメニューに入れて使うソフトがあるけどあれもたくさんのファイル(例えばWindowsフォルダに存在する全てのファイルとフォルダ)を選んで送るってやると
「指定したデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。」
というエラーが出る。仕様だからこれは回避できない

105:デフォルトの名無しさん
08/03/28 21:10:22
16進数のカラーコードを赤・緑・青の3要素に分解するにはどうすればいいの?
例えばボタンの表面のデフォルトカラーって「&H8000000F&」だけど、これをRGB
に分ける方法ってある?
要はRGB関数の逆をやりたいんだけど。。。


106:95
08/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)
で標準モジュールで
URLリンク(hanatyan.sakura.ne.jp)
に書いてある文章を
private→public
に変更して書いています。
変更の仕方がまずかったのでしょうか?
VB6.0 SP3 ですよろしくお願いいたします

107:デフォルトの名無しさん
08/03/28 23:57:10
小学校の算数だろそんなの。。

VBの場合、どうせ共用体もポインタも使えないんだから演算で求める方法を考えてみ。

まず十進数で考えてみてみ。
君は6ケタの数字の上位2ケタを取り出す方法がわからんの?
10,000で割った商を求めるだけだろ。
Hexだって同じことじゃん。

108:デフォルトの名無しさん
08/03/29 00:00:00
>>105
っていうかこれRGBの値じゃないだろう>「&H8000000F&」


109:デフォルトの名無しさん
08/03/29 01:14:20
>>105
RGBの分解方法はヘルプに載ってる。
&H8000000F&はシステムカラーの番号であって、RGB値ではない。

110:デフォルトの名無しさん
08/03/29 03:08:18
>>106
エラーが出てんじゃないの?
WScript.exeで実行してみ
ていうかなんでCScript.exeなの?


111:95
08/03/29 07:43:58
>>109
MakeZIP.VBS
の初めにそのような記述があったのでそのまま使用しています。
ありがとうございます。変更してやってみます

112:デフォルトの名無しさん
08/03/29 09:50:53
>>109
レスありがとうございます。
確かにRGB値だったら16進6桁だと思っていたのでおかしいなとは思っていたのです。
ただ薄い水色(&H00FFFFC0&)だとRを192(=C0)、GとBを255(=FF)としてRGB関数を
呼び出すとちゃんと薄い水色になるので対応しているように思えたのです。
とりあえずWEBでシステムカラー値とRGB値の対応表を探してみますね。。。(-_-)

113:デフォルトの名無しさん
08/03/29 10:10:48
システムカラーは固定色じゃないが

114:デフォルトの名無しさん
08/03/29 13:54:20
URLリンク(msdn.microsoft.com)

115:112
08/03/29 21:36:43
>>114
これです!まさにこれ!
ありがとうございます。マジで助かりました!。・゚・(ノД`)・゚・。

116:デフォルトの名無しさん
08/03/30 11:06:40
>>105

Red = RGB値 And &h0000FF
Green = ( RGB値 And &h00FF00 ) \ 256
Blue = ( RGB値 And &hFF0000 ) \ 65536

だった気がする

117:デフォルトの名無しさん
08/04/02 21:21:58
VB6でのコードの書き方で質問があります。

If hoge = 1 then
  i = i+1
End if

というふうに複数行で書くのと、

If hoge = 1 then:i=i+1

というふうに1行で書くのとでは多少でも処理の速度は変わりますか?

118:デフォルトの名無しさん
08/04/02 21:28:33
そりゃあインタプリタの時代だったらかわったけどさ
EXEで同じコードが吐かれれば速度は同じさ

119:デフォルトの名無しさん
08/04/02 21:31:09
>>117
最適化で同じ処理になると思います。
間違ってたら他の人指摘お願いします。

120:デフォルトの名無しさん
08/04/02 21:53:38
>>118,119

なるほどコンパイルすると結果は同じなのですか、
ありがとうございました。

121:デフォルトの名無しさん
08/04/03 20:42:26
WinXP,Vistaではウィンドウのタイトルに
「abcdefg」のように表示されている物が
なぜか2000環境で実行すると
「ABCDE~~」のように化けてしまいます。
なぜでしょうか?
実行ファイルの横にランタイムも配置しているので
環境でおかしくなるとは思ってなかったんですが。

122:デフォルトの名無しさん
08/04/03 20:57:09
>実行ファイルの横にランタイムも配置している

Sidebyside COMのこと?

123:121
08/04/03 21:23:24
>>122
表現が悪かったです。
実行ファイルの配置してある階層に
msvbvm60.dllや、VB6JP.DLLなど、
VB6ランタイムを一通り置いています。
こうすることでランタイムをシステムから読み込ませないようにするためです。

124:デフォルトの名無しさん
08/04/03 21:23:37
>>121
VBランタイムの言語DLL(VB6JP.dllだったかな)は
「読み込まれた」MSVBVM60.dllと同じフォルダにないといけない。
システムフォルダのが読まれてるんじゃない?

125:デフォルトの名無しさん
08/04/03 21:23:44
ブラウザのリンクをドラッグして処理を行いたいんですけど、
OLEDragDropイベントでDataの中を見てみると
「データの形式が一致しません」エラーが発生します。
リンク先の情報をVBで取得するにはどうすればいいのでしょうか?

126:デフォルトの名無しさん
08/04/03 21:34:21
>>125
もしかしてfiles見てる?

リンクはテキストだぞ。GetFormatとGetDataしてみ。

127:デフォルトの名無しさん
08/04/03 21:42:16
>>123
っていうかどう見ても馬鹿で不勉強なんだからベタにディストリビューションウィザード使えよ。

エンジンの仕組みを理解してもいない、するつもりもない奴が「俺様チューニング」
ぶっこいて動きませんって馬鹿も休み休み言えよ。

128:121
08/04/03 21:54:57
>>127
「ディストリビューションウィザード」って実行環境に作ったソフトを
インストールできる環境で利用可能なものですよね?
ネットワークフォルダから実行するため今回は利用していません。
もしかして勘違いしていますか?

129:デフォルトの名無しさん
08/04/03 22:08:01
>>128
煽り合いもいいが、先にやることあるだろw

130:121
08/04/03 22:14:37
>>129
いや、もし他に方法あるんなら純粋に知りたかったので伺いました。
悪意なんてないです。

>>124
そういう意味ではmsvbvm60.dllも実行ファイルと同じ階層に配置してるので
大丈夫、、、と思ってるのですが。
でも文字がおかしくなるのでシステムから読まれているとも考えられますね。
だとしたらなんでなんでしょうか。


131:デフォルトの名無しさん
08/04/03 22:18:25
>>128
勘違いしてるのはお前さんだろアホか


132:121
08/04/03 22:20:15
>>131
そうなんですか?
勘違いを指摘してもらえるとスキルあがりますので
それはそれでありがたいのですけど。。

133:デフォルトの名無しさん
08/04/03 22:33:52
>>130
ちなみに両方とも俺(124=129)だがw

Windowsは基本的に同じDLLは2度と読まない。(無駄だから)
なので、先に読まれてるDLLがあればそれを再利用する。
(たとえアプリと同じフォルダに同じDLLがあってもだ)

さらに、Win2000は確か読み込むDLLの優先度をアプリと同じフォルダか
システムフォルダかを選択出来る設定があったはず。
それらをお前さんがそれらを把握してないならそれが理由な可能性が高い。
把握してるなら先にMSVBVM60.dllを使うアプリが起動してるからだろう。

あとね、煽り合いする暇があるなら俺の助言をちゃんと考えろよな。
直接的な答えが出せないからあーいう受け答えになってんだろうけども、
煽りもある意味助言だぜ?

134:121
08/04/03 23:24:03
>>133
すみません、
実は単純に>>128の時点で>>124を見落としてたんですよね。。


なるほど。
>Windowsは基本的に同じDLLは2度と読まない。
これは知ってました。
>なので、先に読まれてるDLLがあればそれを再利用する。
これも知ってました、が、
今回の件と脳内でリンクしていませんでした。
ということで当然>>121の動作は予想できるあり得る動作ですね。
対処方法はOSの設定変更、もしくはインストーラー等で
システムにDLLを組み込むことですね。
納得しました、ありがとうございます。

135:デフォルトの名無しさん
08/04/04 00:13:50
>>133
その性質はKnownDllsに限られるはず。

136:デフォルトの名無しさん
08/04/05 12:47:35
VBで作られたもので有名なのって
なんかありますか(^^)

137:デフォルトの名無しさん
08/04/05 13:14:19
>>136
スレリンク(tech板)

138:デフォルトの名無しさん
08/04/05 19:08:57
板違いでしたらご容赦を。
URLリンク(homepage1.nifty.com) にある#1 -End Of Destiny-
をしていたところ、今日になって「実行時エラー'5':プロシージャの呼び出し、または引数が不正です。」
と出て起動できなくなってしまいました。

検索をかけてみるとURLリンク(support.microsoft.com) がでてきたので
互換モードにしてみたのですが解決せず。新しく落としなおしても、保存したフォルダの
置き場所を変えても効果なしでした。

VB製ソフトの現象のようなのでここで質問させていただきました。よろしくです。

139:デフォルトの名無しさん
08/04/06 01:30:19
>>137
ありがとう。
最近からVB始めたんで色々コードを見てみたいんです。

140:デフォルトの名無しさん
08/04/06 08:11:15
>>138
最小化してプログラムを終了すると次回起動したときに
実行時エラーになるね。

たぶん単純なプログラムミスだと思う。
作者にメールしてみるといいよ。

141:デフォルトの名無しさん
08/04/06 19:38:15
>>140
レスどうもです。
自分でできる解決策というのは何かないのでしょうか?
作者は恐らく新作とかで忙しいでしょうし、試しに2作目もやってみたところ同じエラーが出たので
修正も煩雑になりそうですし。

最小化して終了した記憶はないのですが、ウィザードリィ風ゲームなので強制終了は
何度もさせました。

142:デフォルトの名無しさん
08/04/06 22:49:07
>>141
レジストリから画面サイズや座標なんかの読み込みで落ちてるとか?
消すか標準値に書き直せばいけそうな気がする

143:デフォルトの名無しさん
08/04/07 07:58:48
VB参考書4冊セット
URLリンク(auction.item.rakuten.co.jp)
これだけそろってれば完璧かな?

144:デフォルトの名無しさん
08/04/07 08:06:01
>142
おそらくそんな感じ

>141
自分で解決したいのだったら Regmon で、どのレジストリを使ってるか
監視してみるといい
URLリンク(cowscorpion.com)


145:デフォルトの名無しさん
08/04/07 09:54:34
>>142
適当にレジストリを見てると、LeftとTopという項目(画面位置?)が-48000などと
変な数字になってたので一度消してみたところ起動することができました。
どうもありがとうございます。

>>144
これでログとると不要なレジストリとか消せそうですね。
今度何かあった時に使ってみます。ありがとうございます。

146:デフォルトの名無しさん
08/04/08 21:44:43
>>95さんと同じような内容なんですが(検索してたらここにきました)、
自分はMakeZIPをVB6に組み込んで使用しています。
しかし、どうしてもZIPファイルの中身を確認する方法が見当たりません。
確認したいことは圧縮されているファイル数です。
ほかにもサイズ、名前などがわかればベストなのですが
どなたか方法を知ってる方はここにはおられませんか?

147:デフォルトの名無しさん
08/04/08 21:57:21
VB6なら、メジャーなzipを扱えるdll使えよ

148:デフォルトの名無しさん
08/04/08 22:02:48
シェルで、zipを圧縮フォルダとして使えるようになっている環境なら、それも使える。

149:デフォルトの名無しさん
08/04/08 22:27:11
正直InfoZipあたりのzip.exe/unzip.exeでも付属させて
コマンドライン叩いたほがいいんじゃないかっておもう。

150:デフォルトの名無しさん
08/04/08 22:50:17
exeキックだと、コールバック使えないじゃん・・・

151:デフォルトの名無しさん
08/04/08 23:27:16
パイプ経由でコールバックもらえばええやん。

152:デフォルトの名無しさん
08/04/09 11:25:15
それ、コールバックって言わないし

153:デフォルトの名無しさん
08/04/09 12:30:34
>>146
ExtractZip.vbs 読め。

154:デフォルトの名無しさん
08/04/09 14:17:21
ListZip.vbs 読め。
と言っても読めるくらいなら来ないよな?

155:デフォルトの名無しさん
08/04/09 16:00:41
パイプ経由でライトバックもらえばええやん。


156:デフォルトの名無しさん
08/04/09 16:04:30
俺用語は使わないでね

157:デフォルトの名無しさん
08/04/09 16:06:49
筒経由で書き戻しもらえばええやん。

158:デフォルトの名無しさん
08/04/09 16:34:36
マジレスすると、unzip32.dll使え。
VBのコードも付いてる。
商用利用可。

159:146
08/04/09 22:56:57
皆さんありがとうございます。
ListZip.vbs これでできたのですね。ありがとうございます。
しかし、これをVB6で使用できるようにできません(涙)
どこかに標準モジュールないのでしょうか?

160:デフォルトの名無しさん
08/04/09 23:37:46
アホかおまえは。
普通にDLL使え。

161:デフォルトの名無しさん
08/04/10 00:19:24
>>117
ついでですがThenの後ろのコロンは要らないです。

>>159
VBSから標準モジュールやクラスモジュールへの移植は
そう難しくないと思います。

162:デフォルトの名無しさん
08/04/10 01:07:07
なにこいつ

163:デフォルトの名無しさん
08/04/10 11:34:25
あほちゃいますか?

164:デフォルトの名無しさん
08/04/10 11:57:45
スレリンク(tech板:523番)

165:デフォルトの名無しさん
08/04/10 11:58:36
だーかーらー、DLL使えって!!!

166:デフォルトの名無しさん
08/04/10 12:29:51
足し算できないやつに積分教えるようなものだ
やめとけ

167:デフォルトの名無しさん
08/04/10 12:57:35
VB6でグローバル変数を使わず、すべての関数をカプセル化することは可能でしょうか?

168:デフォルトの名無しさん
08/04/10 13:05:01
できるよ。Formがグローバルなのに目をつぶればね。

169:デフォルトの名無しさん
08/04/10 15:58:13
複数ののCheckboxを使って、optionbuttonみたいな交互動作てできませんか?


170:デフォルトの名無しさん
08/04/10 18:39:27
アプリを終了してもアプリ自体がタスクに残る不具合が発生しています。
再発条件は不明ですが、不具合発生した環境があれば原因追求をどのようにするのが効率的でしょうか?
御教授のほどよろしくお願いします。

171:デフォルトの名無しさん
08/04/10 19:05:19
テキストボックスに16進数の文字がある場合
それを変数に数値として代入するにはどうすればいいですか?
valやConvert関数では出来ませんでした

例 テキストボックスの文字 = 0x1234 (十進数:4660) -> 数値に変換して変数に代入 -> 4660 (数値変数)

172:デフォルトの名無しさん
08/04/10 19:10:00
>>170
自分でFormの変数宣言しないで、VBが用意してるForm1とかそのまま使ってるんじゃね?
あれってプロパティにアクセスしたりすると自動的にロードされるから、
たぶん終了直前に何らかのプロパティにアクセスして再ロードされたフォームがある
OnLoadでブレイクでも入れておけば分かるんじゃないかね
もう一つ考えられるのがオブジェクト同士の循環参照だね

173:デフォルトの名無しさん
08/04/10 19:12:20
>>171
頭に&HつけてValしろ

174:デフォルトの名無しさん
08/04/10 20:36:53
なにこれ?
新人みたいなアホな問いばかりじゃないか。


>>169
余裕で出来るけど?
それが何か?

>>170
終了ボタンを押して終了した気になってる系かね。
Unloadイベント中に何か別のFormなり何なり生成してないかい?

>>171
人に聞く前にMSDNくらい一人で見ようぜ。

175:デフォルトの名無しさん
08/04/10 20:49:33
>>173-174
それが、
0x12345678 のような 4桁以上の16進数だと型オーバーで変換が出来ません
MSDNのヘルプ見てもDouble型までが限界のようです
Long型のような8桁くらいの文字(16進)を数値に変換するのにはどうすればいいのかヘルプ見ながら悩んでます

176:デフォルトの名無しさん
08/04/10 20:59:50
>>175
どうせそんなレベルならVB6みたいな終わってる開発環境使う意味ないだろw
まあLongの型指定文字を調べてみることだね。

177:デフォルトの名無しさん
08/04/10 21:00:11
>>175
文字列右から4文字ずつ区切ってvalして、最後にシフトするのはどうですか?

178:デフォルトの名無しさん
08/04/10 21:18:11
>>176-177
CLngという型指定で変換出来ました
どうもありがとう

179:デフォルトの名無しさん
08/04/11 00:18:50
>>172
タスクマネージャーでメモリ使用量を確認していると、
各イベント(フォーム起動→終了→以下繰り返し等)を起動するたびに使用メモリが増加していきます。
循環参照の現象でしょうか?

180:デフォルトの名無しさん
08/04/11 00:51:38
>>179
循環参照って何のことだか理解してる?

>>172 に書いてある
>OnLoadでブレイクでも入れておけば分かるんじゃないかね

を実行してなさそうな文章なんだけどやったの?

181:デフォルトの名無しさん
08/04/11 03:06:23
プログラム板は当たりがきついな

182:デフォルトの名無しさん
08/04/11 03:09:23
>>179

>>172
> タスクマネージャーでメモリ使用量を確認していると、
> 各イベント(フォーム起動→終了→以下繰り返し等)を起動するたびに使用メモリが増加していきます。

解放してないから

183:デフォルトの名無しさん
08/04/11 03:09:56
>>181
おしえてぐーなら優しいけどな
あと2ちゃんでも女子中学生にはやさしいよ

184:デフォルトの名無しさん
08/04/11 06:46:11
つ「Unload Me」

185:デフォルトの名無しさん
08/04/11 10:46:53
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

このコードでファイル操作の処理をすると
読み込み開始から終了までのあいだフォーム全体が操作不能になります
読み込み処理中でもボタン等の操作を可能にするにはどうすればいいでしょうか?
中断ボタンを作ってあるのですが操作不能になって機能しません

186:デフォルトの名無しさん
08/04/11 14:44:14

Visual Basic Version 5.0 Control Creation Edition
スレリンク(tech板:18番)

ふと思ったんだが、↑これと↓これ組み合わせて.EXEファイルを作ることできるのだろうか?

Microsoft Visual C++ Toolkit 2003
スレリンク(tech板)


187:デフォルトの名無しさん
08/04/11 17:54:26
上でDLL (OCX)作って、下でそれを使うEXE作るってことは可能だろうね。
そもそもなぜ今更VC++ 2003?
事情がなければ2005でも2008でも使えばいいだろうに。

188:デフォルトの名無しさん
08/04/11 19:00:08
>>185
つ「DoEvents」

189:デフォルトの名無しさん
08/04/12 20:13:12
ComboBoxでリストから項目が選択してドロップダウン部分が消えた瞬間に任意のコードを実行したいのですが
DropDownClosedやSelectionChangeCommitted
その他のそれらしいイベントを設定しても
選択→ドロップダウンが消える→再度選択
としないとそのコードが実行されません

どのイベントを設定すればいいでしょうか?

190:デフォルトの名無しさん
08/04/13 10:23:58
Click

191:デフォルトの名無しさん
08/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を再現せず、バイナリデータの部分が変わってしまいます。
通常このような操作を行う場合はどのようにすれば良いのでしょうか?
お力を貸して下さい。

192:デフォルトの名無しさん
08/04/13 18:48:40
>>191
それはShiftJISにしたときのバイト数えて詰め物したりでかなり面倒くさい。
結局Cランタイムのfopen系の関数をラップしたActiveXを作ってそれで読み書きさせた。

193:デフォルトの名無しさん
08/04/13 19:14:58
リストボックスで選択した場所から下の項目を削除したいのですが
下のプログラムだとindexエラーが出てうまくいきません

For i = ListBox1.SelectedIndex  To ListBox1.Items.Count - 1
ListBox1.Items.RemoveAt(i)
Next

どう対処すればいいでしょうか?

194:デフォルトの名無しさん
08/04/13 19:17:44
後ろから削っていくとか。

195:デフォルトの名無しさん
08/04/13 19:26:36
デバッグして確認したときそれぞれの値が
ListBox1.SelectedIndex=2
ListBox1.Items.Count=8  (項目数=3)
となっていて

その状態で>>193のFOR文を実行すると i の値が2,3,4,5,6,7 とステップして
ListBox1.Items.RemoveAt(i) で最後の項目まで問題なく削除出来ると思うのですが
どういう訳かエラーになります

196:デフォルトの名無しさん
08/04/13 19:28:34
>>195 修正
× (項目数=3)
○ (項目数=7)

197:デフォルトの名無しさん
08/04/13 19:33:24
どういう訳かも何も、たとえばRemoveAt(10)を実行した時点で
いままでItems(11)だった奴がItems(10)に繰り上がるわけだが

198:デフォルトの名無しさん
08/04/13 20:00:32
>>197
当たり前のことすら理解出来てない人に
答えを教えてくれてありがとうございます
無事ちゃんと動作するコードに出来ました

199:デフォルトの名無しさん
08/04/13 22:11:10
1年半後に登場するWindows7にはVB6ランタイムはサポートされますか?

200:デフォルトの名無しさん
08/04/13 22:59:27
知らんがな(´・ω・`)

201:デフォルトの名無しさん
08/04/14 17:37:40
VB6でPublicの構造体・変数の宣言可能な数(容量?)ってどの位か解りませんか?

202:デフォルトの名無しさん
08/04/15 12:38:32
VS2008のVBでラベルの背景を透明化するにはどうすればいいですか?
label1.BackColor = Color.Transparent
では出来なかったです

203:デフォルトの名無しさん
08/04/15 13:34:38
>>202
スレタイ読めますか?

204:デフォルトの名無しさん
08/04/15 23:42:02
>>201
そんなのあるんですか?

205:デフォルトの名無しさん
08/04/16 10:14:31
ループする処理の中にあるIF文をSelect文にしたら処理が倍以上かかるようになったんですが
これはどうしようもないことですか?

206:デフォルトの名無しさん
08/04/16 11:32:45
>>205
条件文がわからんから、「そんなもn」としか答えようが無い。

207:デフォルトの名無しさん
08/04/17 08:12:15
>>205
Selectを使うな。
Excelとのやりとりは速度が遅くなる。
Withを使うか、まとめて配列に代入してから配列を扱え。

208:デフォルトの名無しさん
08/04/17 19:13:52
>>204
よほどの事が無い限り、まず制限を超える事は無いと思いますが有りました。
(コンパイル時にメモリー不足と出る)


209:デフォルトの名無しさん
08/04/17 20:06:02
>>208
そりゃ単にメモリ増設すりゃ回避できるんじゃないか?

210:デフォルトの名無しさん
08/04/17 20:26:21
>>209
2GB以上アロケートできないとかないのかね?

211:デフォルトの名無しさん
08/04/17 22:35:50
ループ処理中に何かボタンおされたらループから抜けるプログラムを作りたいのですが
そのボタンのsubではない 違うSub内で
コントロール上のどのボタンが押されたのかを検出する方法ってありますか?

212:デフォルトの名無しさん
08/04/17 22:55:24
>>211
ループ処理の中でDoEventsと終了フラグのチェックを頻繁にやるしかない。
DoEventsを使うときは再入やら予定外の動作をはじくようにする必要がある。

213:デフォルトの名無しさん
08/04/18 12:23:30
昔、だれかが作ったソフトのメンテしてたら
フォームに貼り付けたコントロールの数がオーバーしてこれ以上追加できない
という状況になったときに、泣いたことはあるなw

214:デフォルトの名無しさん
08/04/18 14:24:41
メンテだと設計方針が間違っていようが、そのまま行かざるを得ないときもあるから辛いな

215:デフォルトの名無しさん
08/04/19 22:13:21
FileCopyでファイルコピーするとshift-jisで書き出したファイルがUTF-8になってしまうのですが
対象方はありますか?

216:デフォルトの名無しさん
08/04/21 21:51:25
VBからExcelに値を貼り付けてプレビュー表示をする処理にて
処理中は見えないようにするためVisibleをFalseにするのですが、
EXEファイルから起動するとVisibleをFalseにした段階で最背面に表示されてしますいます。

Visual Basicから起動するとプレビュー画面が最前面に表示されるのですが何故でしょう?

使っているコンポーネントはQuickPack、Farpoint SpreadSheet、InputMan Proです。

今まで別な環境で作った際はこんな現象になったことはありません。
同じコンポーネントを使っている方で克服した方はおりますか?

ちなみにSetWindowPos等使わないで済ませたいです。

途中ダイアログを表示したりメッセージボックスを表示させたりするので
Visual Basicで起動しているときと同じ用途で実現させたいのです。

ちょっと分かりにくいかも知れませんが宜しくお願い致します。

217:デフォルトの名無しさん
08/04/21 22:11:38
コピペ君って馬鹿だな、まで読んだ。

218:デフォルトの名無しさん
08/04/22 10:32:51
vb6の評価版使ってて、exeにできないんですが、
vb6.0安く売ってるところないですか?

219:デフォルトの名無しさん
08/04/22 12:38:09
>>218
なんで今時VB6?


220:デフォルトの名無しさん
08/04/22 12:56:29
>>219
だよねぇ。

Visual Basic 2008 Express がタダで手に入るこのご時世に。

221:デフォルトの名無しさん
08/04/22 15:26:39
ツールバーのアイコンを大きくしてメニュー名をアイコンの下に表示させたいのですが、
どうすればいいのでしょうか?

222:デフォルトの名無しさん
08/04/23 01:40:48
>>220
それってVB6のOCXの開発ライセンスキーが付いてる?

223:デフォルトの名無しさん
08/04/23 13:32:21
>>222
お前は何を言っているんだ

224:デフォルトの名無しさん
08/04/23 14:26:17
>>219
なんでVB(6.0以前)スレに居るの?

225:デフォルトの名無しさん
08/04/23 15:13:16
>>223
お前は何を聞いているんだ

226:デフォルトの名無しさん
08/04/23 18:07:06
VB6で立方メートルの単位(m3)のように右上に数字を乗せる方法はないでしょうか?
またはキーワードだけでも教えていただけないでしょうか?

227:デフォルトの名無しさん
08/04/23 19:43:53
>>226
ラベルで貼っちゃダメなの・・・?

228:デフォルトの名無しさん
08/04/23 20:01:01
>>227
通常はラベルで代用するものなのでしょうか?

229:デフォルトの名無しさん
08/04/23 20:22:32
ブラウザとかリッチエディットでそういう書式指定って方法も思いつく。
ほかにもUnicodeに対応していればm³や㎥って文字が使える。

230:デフォルトの名無しさん
08/04/23 22:17:56
brwWebBrowserで取得したものを
htmlかテキストにして文字変数に格納する方法ないですか?

231:デフォルトの名無しさん
08/04/23 23:18:41
>218
現在VB6を新規に入手する方法はMSDNに入るしかない。

>226
上付きの3はISO 8859-1/15の0xB3にあるが…UnicodeでもU+00B3だな。

232:230
08/04/23 23:29:47
Text1.Text = Inet1.OpenURL(brwWebBrowser.LocationURL)
で取得できましたが 文字バケのようになり日本語で表示されません。
フォントは明朝に設定したのですが。

233:230
08/04/24 00:41:02
RichTextBox1.Text = brwWebBrowser.Document.body.innertext
これで一応できましたが
普通のTextBoxは日本語ダメでしたっけ?

234:デフォルトの名無しさん
08/04/24 01:34:10
Text1.Text = brwWebBrowser.Document.body.innertext


235:デフォルトの名無しさん
08/04/24 10:25:48
VBのMAPIでメールを操作したいのですが
IDやPASSの設定はサンプルにのってるのですが
POP3等の設定がのっていません。
Outlookの設定に依存してるのでしょうか?

POP3設定のキーワードを教えてください。

236:230
08/04/24 13:46:15
Text = WebBrowser1.Document.body.innertext
これで数百行あるものを読み込むと200行ちょっとまでしかとれてないようですが・・・
行制限があるんでしょうか?

237:デフォルトの名無しさん
08/04/24 14:02:43
読み終わってからにしろよ早漏

238:230
08/04/24 14:33:54
なるほど。

239:デフォルトの名無しさん
08/04/25 10:12:47
指定ファイル(テキストや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()

今のところこの方法しか思い浮かびません
もっと簡潔な方法があれば教えて下さい

240:デフォルトの名無しさん
08/04/25 10:31:59
何を指して良い方法と言っているのだ?
時間?効率?ソースの短さ?exeのバイト数?

241:デフォルトの名無しさん
08/04/25 10:38:24
>>240
私が思う良い方法とはコードの短さです
今のところ>>239以外には他に思いつかなくて

242:デフォルトの名無しさん
08/04/25 11:04:19
コードの短さか


そんなクソの役にもたたねえ事にこだわるな!

243:デフォルトの名無しさん
08/04/25 13:16:01
>>239
とりあえずスレチだと思うのだが。
それ.NETだろ?


まぁ行数取得ならFileSystemObjectだったかTextStreamだったか忘れたが
1行で取得する処理書くこと出来るよ。

ググってみ?

244:デフォルトの名無しさん
08/04/25 14:45:05
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

になってオリマす

245:デフォルトの名無しさん
08/04/25 14:46:39
ログをファイルを出力しているのですが
最新の1000行のみに維持したいのですが
何か良い方法はありますでしょうか?

246:デフォルトの名無しさん
08/04/25 15:17:27
良い方法?
1000行固定というクソ仕様をやめてしまえ

247:デフォルトの名無しさん
08/04/25 15:23:28
全部読んで1行捨てて書き出して、最後に今のログ1行書いたら駄目なのか?

248:デフォルトの名無しさん
08/04/26 02:44:34
WebBrowserコントロールを使って
そのWebの書き込みテキストボックスから書き込みする方法ありますかね?

249:デフォルトの名無しさん
08/04/26 11:30:44
>247
内部バッファならともかく、ファイルでそれはないだろ。

250:デフォルトの名無しさん
08/04/26 11:59:13
>>249
ならどうしたらいいのか書けよカス

251:デフォルトの名無しさん
08/04/26 12:03:03
>250
>246

252:デフォルトの名無しさん
08/04/26 12:55:00
お前の能力では出来ないって事か

253:デフォルトの名無しさん
08/04/26 14:18:36
↑こんな奴がいるから糞ソフトが無くならんのだよな

254:デフォルトの名無しさん
08/04/26 15:53:23
↑その糞ソフトすら書く方法を知らないカス

255:デフォルトの名無しさん
08/04/26 16:03:32
何が問題なのか理解してないようだ
中国人の外注のほうがマシに思える

256:デフォルトの名無しさん
08/04/26 16:06:07
>>249
お前というやつは・・・。
いきなり上書きしたら、
書き込みの途中でエラーが出たら
ログが壊れるだろ・・・。

257:デフォルトの名無しさん
08/04/26 16:21:52
>>255
うむ
中国人に「最新の1000行のみに維持したい」って言えば
ちゃんと作ってくれるだろうな

258:デフォルトの名無しさん
08/04/26 23:45:53
TextStream使えば?

・ReadAll()で全行読み込み(なかなか高速)
・Sprit()で改行文字をKeyに配列化
・UBound(配列)>=999の場合は、配列にする前の文字列からInStrRevで改行文字探して見つかった位置-1までを取得
・先頭に新しいログ文字列追加
・で、書き出し

みたいな

259:デフォルトの名無しさん
08/04/26 23:49:36
>>256
書き込みの途中って?
例えばどんなエラーがある?

260:デフォルトの名無しさん
08/04/26 23:57:19
>>256じゃないが
エラーも出ずにファイルごとぶっ壊された経験なら多々あるなあ
ローテートの基準は行数にしないで日付や時間で新規ファイルに割って、
取得や表示時の処理で行数割りにすべきじゃねえの?


261:デフォルトの名無しさん
08/04/26 23:59:31
1000行程度でエラーになった経験は無いからなあ

262:デフォルトの名無しさん
08/04/27 00:01:07
壊れる事象が起こる原因が上書きなら、
新規作成→リネームでいい気がするが?
元のFileは消した状態で。

263:デフォルトの名無しさん
08/04/27 00:05:12
>>260
それはプログラマである質問者でなく、設計したアホに言えよって話にならね?
もしくはそう注文してくる客に。

そういう仕様だって言われりゃマはそう作るしかないんだし
だったら最善の策を考えた方が仕事も早く終わるだろ。

264:デフォルトの名無しさん
08/04/27 00:12:02
>>259
1. ディスクフル
2. 書き込みするデータを用意する際のエラー
3. メディアの部分的な破損

こんなところか?

265:デフォルトの名無しさん
08/04/27 00:25:26
ディスクフルは今回の場合関係なさそうじゃね?
メディアの破損については今回のファイル書き出し云々関係無い気がする。

書き込みデータ準備のエラーは具体的には何がある?

266:デフォルトの名無しさん
08/04/27 00:26:09
>>263
だな、激しく同意
反論できる状況でなけりゃ、結局そう作るしかないんだよな

267:デフォルトの名無しさん
08/04/27 00:31:47
>>266
大体さ、設計について話すってのは、ぶっちゃけスレチな気がするんだよ。
ここはVBプログラマ質問スレだろ?

プログラマからの質問に対して設計に文句言うのはおかしいと思うんだが
間違ってるか?

268:デフォルトの名無しさん
08/04/27 00:44:46
>>265
メディアが部分的に破損してて書き込み失敗したら、
上書きしてた場合はログが壊れて、
別ファイル作ってた場合は前のログは残る。

269:デフォルトの名無しさん
08/04/27 00:52:41
[方法その1(昔からある方法)]
サイクリックファイルという概念を使う。
詳しくはググれ。

[方法その2]
ログを全てオンメモリに持って、時々ファイルにflush。
プログラムが異常終了したときは、ログが失われる可能性がある。

270:デフォルトの名無しさん
08/04/27 00:59:42
ファイルの書き込みは実際にはセクタ単位で行われるから
サイクリックファイルって万が一破損した場合の影響範囲は
1セクタ分になんのかね。

271:デフォルトの名無しさん
08/04/27 06:57:18
>>267
設計に触れなくていいと言うなら間違っている
与えられた事しかできないのは下郎の仕事だよ

272:デフォルトの名無しさん
08/04/27 08:51:52
ログファイルの行数制限ってそれ程アホな仕様とは思えないんだが

273:デフォルトの名無しさん
08/04/27 09:05:46
馬鹿ですね。

274:デフォルトの名無しさん
08/04/27 11:10:24
>>271
そうでなくてスレチって意味だろ

275:デフォルトの名無しさん
08/04/27 15:05:31
フォームが非アクティブな時にクリップボードを監視して
文字があればフォーム上のテキストボックスにすぐ貼り付けるというプログラムを作っているのですが
FormのLostFocusで処理させるとクリップボードに文字をコピーしたあと
フォームをアクティブにしないとテキストボックスに内容が反映されません

どのイベントで処理すればいいでしょうか?

276:デフォルトの名無しさん
08/04/27 15:19:39
>>275
監視って言いながら1回しか見てないの?
Timer使って一定時間ごとにチェックするとかじゃなく?

277:デフォルトの名無しさん
08/04/27 20:49:19
>>272
うむ、組み込み系なら良くあること

278:デフォルトの名無しさん
08/04/27 22:19:51
1行500byteで、50メガ程のテキストファイルをADOを使ってmdbに突っ込んでるんですが、
テキストファイルの改行コードがlfなんで、LineInputじゃ取れないんで、
一度バイナリで取り込みcrlfに変換後、保存してLineInputってのもスマートじゃないし、
stringで全部読み込み、midって取るのも後半重くなるし~って事で、詰まってます。

何かいい方法はありませんでしょうか?

279:デフォルトの名無しさん
08/04/27 23:12:03
>>278
ADOのStreamオブジェクトを使うといいような気がする

280:デフォルトの名無しさん
08/04/28 10:48:11
>>249
1000行ぐらい内部バッファあけといて毎回読み書きしてもいいとおもたんだが
もしかして一般的には不毛な設計なのか?

281:デフォルトの名無しさん
08/04/28 14:06:24
無駄にHDDを劣化させることは無いだろ
単純なログにすれば何も問題ないのにCPUの無駄遣いするなよ
Vistaを筆頭に、重かったりメモリ食いまくったりするのが流行なのかもしれないがな

282:デフォルトの名無しさん
08/04/28 14:15:14
バカは黙ってろよ

283:デフォルトの名無しさん
08/04/28 14:54:46
車や電化製品でも、誰も使わない機能をつけるのがカッコイーんだよ。
自己満足の世界に口を出すなっつーの。

284:デフォルトの名無しさん
08/04/28 16:06:17
知的探求は必要
ソースをいかに短く書くか燃えなかった?

285:デフォルトの名無しさん
08/04/28 17:11:45
行固定のログファイルとか良くやるけどね
これだけ議論になるということは、あまりこういう仕様に直面したこと無いのか?

286:デフォルトの名無しさん
08/04/28 17:26:55
通信アプリなどのようにリクエストが多かったりするログで1000行固定はクソ仕様かもしれない
だが今回は1000行であり1起動で数回くらいの頻度だろ?騒ぐほどの事ではない

でも俺もクソ仕様だとおもう

287:デフォルトの名無しさん
08/04/29 11:12:32
VB6なんですが、
製作しているプログラムProgAではOpenでテキストファイル(1行のみ存在)
を開いてInputのRead Sharedで1秒毎に読んでは閉じます。参照しかしません。

別のプログラムProgBからそのテキストファイルは
1秒毎に更新されています。内部の仕様はわかりませんがProgBから
もしロックをかけて更新しているなら
同時にProgA側で開こうとすればエラーが出ると思います。
それは問題ありません。

ProgAでファイルを参照していてもProgBからそのファイルの更新さえ
できていれば、ProgAとしては問題ないのですが、
今の状態では不都合が生じるでしょうか?

ProgAでファイルを開いている状態(ブレークポイントでとめて)で
自分で作った外部アプリでファイルに更新をかけてみたのですが、
ファイルは普通に更新されたのですが、これで良いのかどうか。。。

288:デフォルトの名無しさん
08/04/29 17:01:25
プログレスバーの上にColor.Transparentを設定したラベルをおいて
ラベルの親コントロールをプログレスバーに再設定しても
どうやらプログレスバーがColor.Transparentをサポートしていないようで
ラベルの背景が半透明化されません

プログレスバーのようなColor.Transparentをサポートしないコントロール上で
背景を半透明にさせるにはどうすればいいですか?

289:デフォルトの名無しさん
08/04/30 01:43:37
文字をpadleft等で桁揃えして文字数が同じなのを確認して
コンボボックスのフォントをMSPゴシック、MS UIゴシック等の等角フォントにして
フォントが変更されたのも確認した後
それらの文字数が同じアイテムをコンボボックスに追加してリスト内のアイテムを確認すると
どうやってもズレて表示されてしまいます
解決法ってありますか?

290:デフォルトの名無しさん
08/04/30 02:01:53
>>289
> コンボボックスのフォントをMSPゴシック、MS UIゴシック等の等角フォントにして

上記は等角フォントではないよ。
MSゴシックを使ったら?


291:デフォルトの名無しさん
08/04/30 04:34:26
>>290
MSゴシックにしたら改善されました、ありがとうござます
フォントについて勘違いしてたみたいです
プログラミング以前の話に答えていただいて助かりました

292:デフォルトの名無しさん
08/04/30 09:44:45
Join関数を使わないでMidステートメント(関数ではない)で文字列を連結する場合、MidとMid$ではどちらがいいの?
速度を計っても差がわからない。
どっちも同じなのかな?

関数ならもちろんMid$が少し速いが。

293:デフォルトの名無しさん
08/04/30 12:34:02
そんな知識もない奴がいまさらVB使ってどうするのかなw
っていうか、mid$で文字列連結って意味不明な気がするが。

まあここでも散々既出だと思う(折れ自身複数回回答してるから)けど、
(っていうかググッてもすぐ回答が見つかるはずだとも思うが)

 $付き: 返り値の型がString
 $なし: 返り値の型がVariant

Variant返す関数の存在理由は良く知らないが、普通は使う必要ないんじゃないのかな。

294:デフォルトの名無しさん
08/04/30 13:21:40
>>293
Mid$で連結が意味不明なら答えるなよ。
わかる人はすぐ分る。
そもそもオマイは関数と勘違いしてるし。
俺より初心者みたいだなw

295:デフォルトの名無しさん
08/04/30 13:53:06
>そんな知識もない奴がいまさらVB使ってどうするのかなw

すぐこういう事を言い出す輩が多いな。
あとクソ仕様がどうとか。
学生か趣味でしか使わない奴らには一生理解できないんだろうけどね。

296:デフォルトの名無しさん
08/04/30 13:57:09
>>287です
簡潔でなかったので、簡潔に書きます。

テキストファイルAをあるアプリAで
OPENステートメントのRead Sharedで開いていた場合
別アプリBでファイルAを開いたり更新したりしようとすると
問題が生じるでしょうか?

297:デフォルトの名無しさん
08/04/30 18:35:54
誰か>>294の言ってる意味がわかる奴いる?w

俺は意味不明なこと言ってるとしか思えないが、
正直VBは年に1度触るか触らないかの状態なので自信もって否定はできない、と一応謙虚に言っておく。

ついでにまあどうでもいいが、「そんな知識もない奴がいまさらVB使ってどうする」
って指摘が不適切とは俺は思えないんだよねやっぱり。

初心者が今更VB使ってどうすんの。
まあそりゃ保守の需要とか学校の講義でたまたま使ってるとかあるのかもしれんが、
今更初心者にVBのコードを保守させる会社とか、今更VB6を使って教える学校ってのは如何なもんなのかねえw

298:デフォルトの名無しさん
08/04/30 18:51:23
いやいや。「お前が言うな」

299:デフォルトの名無しさん
08/04/30 19:04:12
>>297
恥ずかしい奴だな。
URLリンク(support.microsoft.com)

300:デフォルトの名無しさん
08/04/30 19:19:17
mid$で連結って、前スレあたりで話題になったよね

301:デフォルトの名無しさん
08/04/30 19:21:36
>>297はMidステートメントは使ったことないんだよきっと。
&演算子で連結することしか知らなかったりしてw

302:デフォルトの名無しさん
08/04/30 19:23:40
知らなかったのならググればよかったのにw

303:デフォルトの名無しさん
08/04/30 19:25:43
>>299
語るに落ちてるな。
サンプルコードをロクに理解せずにコピペして使ってるVB厨房の君自身をね。

そのサンプルコードの動作原理をちゃんと理解してる?w
理解してたら決して「Mid$で文字列を連結」などとは言わないよ。
そのコードでMid$が担ってる機能は「文字列の連結」じゃなくて「置換」だと思うけどね

304:デフォルトの名無しさん
08/04/30 19:30:40
>>303
では、件のURLの<title>がなぜそのようになっているか、説明してもらおうか。

305:デフォルトの名無しさん
08/04/30 19:32:16
>>303
なぁ、こんな所で戦っても、何も得るものないぞ?
匿名なんだからさ、おとなしく引きさがれよ。

306:デフォルトの名無しさん
08/04/30 19:33:35
人に突っ込む前になぜ"pseudo-concatenation"と書いてあるか考えた?
っていうかコード読め。読んで理解しろって。
人様に突っ込むのなんざその後だろうが。

307:デフォルトの名無しさん
08/04/30 19:36:44
>>303
とことん恥ずかしい奴だな。
お前は>>292の内容が全く理解も想像もできなかったんだろ?
「文字列連結」と「Mid」というキーワードで連想するものを初めから知ってたらな、
最初の発言で「それは置換だろ」と指摘しとけよ。

もっともそんなこと指摘しても、>>292の疑問には何の解決にもならんがな。

ちなみに、>>292の回答は、「自分で計測して速い方を使え」だ。同じだったら、好きな方でかまわん。

308:デフォルトの名無しさん
08/04/30 19:42:50
>>307
その回答もどうかと
そんな浅い事なら質問してないだろう。

309:デフォルトの名無しさん
08/04/30 19:43:03
顔真っ赤で反論考え中w

310:デフォルトの名無しさん
08/04/30 19:45:23
そもそもMid$ステートメントなんてないのかもね。
Join関数をJoin$と書いても動くのと同じじゃねーの?

311:デフォルトの名無しさん
08/04/30 19:45:43
>>308
内部実装を知りたいなら、プロセスにアタッチして逆アセンブルされてるのを
眺めたらわかるかもね。

俺は興味無いけど。

312:デフォルトの名無しさん
08/04/30 19:46:56
>>307
何をいってるんだコイツ。
俺はエスパーじゃない。
>>292の「Midステートメント(関数ではない)で文字列を連結」が>>299
コードのことを指しているとして、そんなことが俺にわかるわけがない。

313:デフォルトの名無しさん
08/04/30 19:48:47
>>312
つ「知らないなら黙っとけ」

314:デフォルトの名無しさん
08/04/30 19:49:26
普通Midステートメントと文字列の連結といったらわかるぞ?
エスパーじゃないのはもともと分かってるw

315:デフォルトの名無しさん
08/04/30 19:53:43
>>312
わからないなら、何でレスしたんだ?
おとなしく黙っとけば恥もかかずに済んだものを。

316:デフォルトの名無しさん
08/04/30 19:58:20
VBは年に一度触るかどうかレベルの奴が、何でこのスレ巡回してんだよw
教えたがりもたいがいにしとけよw

317:デフォルトの名無しさん
08/04/30 21:23:09
これはひどい・・・

318:デフォルトの名無しさん
08/04/30 22:02:02
ここではよくあること
気にするな

319:デフォルトの名無しさん
08/05/02 20:16:42
>>292
この間未だにVB5で稼動してるシステムにVB6と互換性あるJoin関数やReplace関数作ったんだけど
そんときMidステートメント使ったのね。

最初はMidでやってたんだけど遅い気がしてMid$に変えたら早くなったよ。
VB5だからなのか、使ってるマシンが古いせいなのかは知らないけど、
Mid$の方が早いみたいだしMid$使ったらどうかな?

320:292
08/05/03 20:34:21
>>293以外のみんなありがとね。
こちら何度やっても差が出なくて困ってる。
おれも>319のようにMid$の方が速かったことがたしかあったけど、どうも最近再現しない。
>>310のJoin$みたいに、もしかしてつけなくていいものをつけてるとしたら馬鹿らしいし
>>319にはすまんけど付けないことにするかな?

321:デフォルトの名無しさん
08/05/03 22:23:53
>>320
URLリンク(officetanaka.net)

322:デフォルトの名無しさん
08/05/03 23:21:14
>>321
500万回でMidが5秒って、1回あたり1usじゃん。
+で文字列連結するのをMidに変えたときの恩恵に比べれば、差なんて無いも同じ。

・・・まぁ、俺は常にMid$つかうけどね。

323:292
08/05/03 23:44:10
>>321
あまりラベルの低いサイトにリンク張らないように。
それってMid$関数だろ?
俺が言ってるのは関数じゃなくてステートメント。

324:デフォルトの名無しさん
08/05/03 23:49:57
いいかげん、うざくなってきたな

325:デフォルトの名無しさん
08/05/04 00:11:16
うむ

326:319
08/05/04 11:33:59
>>320
まあそれはお好きにどうぞw

327:デフォルトの名無しさん
08/05/04 17:03:11
なんか以前論争になったときは「変なこという奴だな」と思いつつも黙っていたが、
VBのような言語(つまりCのような設計思想の言語とは違う、と言いたいんだが)で
「組み込み関数」と「ステートメント」を峻別することに意味なんてあるんか?w

確かにMSDNライブラリ(俺の手元にあるのは2001年10月のもの)を見ると、
たとえばMid$ならMid$に関して、「Midステートメント」と「Mid関数」の二つのエントリーがあるが、
二つの説明を見比べれば、「Midステートメント」の方は明らかに「Mid関数」の返り値の型の仕様ついて
詳細な説明をスキップするための便宜上のもの(はっきり言えば煙に巻いて誤魔化している)
に過ぎないように思われるが。

328:デフォルトの名無しさん
08/05/04 21:36:28
Dim s As String
s = "1234567890"
Mid$(s, 3) = "alpha"
Mid(s, 3) = "beta"

vb6でこーゆーコードをコンパイルして、逆汗したが、
結局両方とも同じように_vbaMidStmtBstr呼んでるだけだたよ。

329:デフォルトの名無しさん
08/05/05 05:46:33
ってことはMidで十分ってことだよな。
関数はMid$が常識だろうが。

330:デフォルトの名無しさん
08/05/05 09:28:20
フォーム タイトルバーのフォントサイズを変更するにはどうすればいいですか?

フォーム プロパティのフォントサイズを指定すると
置かれている各コントロールのフォントサイズは変わりますが
肝心なタイトルバーのフォントサイズが変更されません

331:デフォルトの名無しさん
08/05/05 12:55:21
画面のプロパティのデザインで決まっているので、個別のウィンドウで変更することはできません。

332:デフォルトの名無しさん
08/05/06 20:27:53
WebBrowser1でWebを読み込んで縦スクロールバーをコントロールする方法ないですか?
最初に一番下まで持っていきたいのですが。

333:デフォルトの名無しさん
08/05/07 12:10:56
Webを書き換えできる立場にいるなら<a name="hoge"></a>でアンカー付けて読み込む時にURL末尾に#hoge
Webは書き換えられないならフォーカスをIEコンポにしてSendKesとか・・・

334:デフォルトの名無しさん
08/05/07 15:17:49
>>333
できました ありがとうございます。

335:デフォルトの名無しさん
08/05/09 00:06:54
midの話題に便乗して質問
replace関数とmidステートメントの使い分けって
どういう風にしたらよろし?

あとreplace関数で下のようにInStr関数を使って開始位置を設定するのは意味がない?

strHoge = "...hoge"

strFuga = Replace (strHoge, "hoge", "fuga", InStr(strHoge, "fuga", vbBinaryCompare))

336:デフォルトの名無しさん
08/05/09 00:36:52
>>335
使い分けって全然別物じゃんw
っていうか、だからVBのような言語で関数とステートメントを「使い分け」ることこそ意味がないつーに。

mid:
 与えられたBSTRのバイナリイメージを直接上書きする。
 当然、置き換えられた部分の文字数も、文字列の長さも変わらない。(変えられない)

replace:
 与えられた文字列の中の特定の部分を別の文字列で置き換えた文字列を新たに作成する。
 「置き換えられる」部分文字列の長さと「置き換える」部分文字列の長さは違っていてもかまわない。

337:デフォルトの名無しさん
08/05/13 02:50:02
vb6.0でフォームだけ透明化して、ラベルなどはそのまま表示させることって可能でしょうか?
方法があれば教えてください。

338:デフォルトの名無しさん
08/05/13 04:27:56
十字キーの↓でラベルを順に選択できるようにしたいのですが、

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

と記述するよりもっと効率がいいやり方はないのでしょうか?

339:デフォルトの名無しさん
08/05/13 08:28:01
>>338
効率以前に「他人に意味が通じる文章」を書く方が先決だろう。
というか、推敲する手間を惜しむような奴にプログラマの才能などないと思う。

340:デフォルトの名無しさん
08/05/13 12:30:28
>>338
効率もなにも、ひょっとしてそのコードバグってないか?
13、14、15はYellowになるだろ、一回↓キー押しただけで
順ってなんですか?

341:デフォルトの名無しさん
08/05/13 14:12:33
>>338
訳:カーソルキーの↓キーを1回押すごとにラベルを順番に選択(色を変更)したいのですが、
>>338のコードと記述するよりスマートになるやり方はありませんか?

342:デフォルトの名無しさん
08/05/14 00:08:54
>>339
分かりにくくてすみません・・・

>>340
バグってます。
通常の状態をマジェンタ、選択されてる状態を黄色にして、
↓キーを押すたびに選択されているラベルを変えるプログラムをつくりたいんですが、うまく行きません・・・

>>341
そういうことです。ありがとうございます

343:デフォルトの名無しさん
08/05/14 02:23:29
ラベルをコントロール配列にでもして、
現在黄色い場所をインデックスとして覚えといて
そいつをカーソルキーでうろうろさせるとか

344:デフォルトの名無しさん
08/05/14 03:49:52

◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
URLリンク(system-trading.jp)

5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
URLリンク(www.fx-gp.com)

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

345:デフォルトの名無しさん
08/05/14 08:19:34
コピペ君って馬鹿だな、まで読んだ。

346:デフォルトの名無しさん
08/05/14 18:24:00
GetAsyncKeyStateを使うとボタンを瞬時に離さないとIf以下のコードが何回も繰り返し行われてしまいます。
途中にWaitなどを入れてみましたが、そうするとキーを押したときに反応しないときがあります。
解決方法を教えてください。

347:デフォルトの名無しさん
08/05/14 22:46:12
>>346
釣りに見えるのはなぜなになでしこ

簡単に解決させたいなら ElseIf と KeyUpイベントを覚えるといいと思うよ

348:デフォルトの名無しさん
08/05/15 00:04:46
>>374
偉そうに舐めた口利いてる奴がそのレベルじゃアカンだろうw
コントロールのイベントはフォーカスがあるときしか拾えない。
こんなUIの基礎も理解してないの?

>>346
GetAsyncKeyStateのリファレンスにまんまの答えが書いてあるじゃん。
もちろん自前でステートマシン作って解決してもいいんだけど。
ステートマシンっていう考え方は小学生でも理解できるわりに応用が利く(たとえば
>>338のようなコードをわかりやすくするのにも使える)から覚えて損はないよ。

349:デフォルトの名無しさん
08/05/15 00:18:53
>>347
ElseIfとKeyUpですか・・・ちょっと調べてきます

>>348
なるほど。もっと詳しく勉強する必要があるんですね。
ふたりとも回答ありがとうございます

350:デフォルトの名無しさん
08/05/15 08:21:35
だから詳しく勉強する必要はないの。
そう言ってるでしょ?
MSDNライブラリのGetAsyncKeyStateの項にそのまんま答え書いてある

351:デフォルトの名無しさん
08/05/15 17:22:21
>>348
FormにKeyUpイベントあんの知らんの?

352:デフォルトの名無しさん
08/05/15 17:36:32
>>348
Labelのイベントだとは書かれていないのにも関わらず
Label_KeyUp()に書けと読み取ったお前もかなりやばいぞ。

キー操作でLabelに何かアクションする場合、
Form_KeyDown()やForm_KeyUp()に処理が書かれることが多い。
>>347はそれを言ってるんだと思うが?

353:デフォルトの名無しさん
08/05/15 17:56:57
VB6を使ってるんだがFlexgridでAccess2000に接続したものを表示したい。
ADOコントロールを使わずに接続することって可能?

354:デフォルトの名無しさん
08/05/15 18:01:23
まず質問者と>>348>>338のバグを認識しないとな。

355:デフォルトの名無しさん
08/05/15 18:50:24
>>353
DAOでやるってことかな

356:デフォルトの名無しさん
08/05/15 19:40:08
初歩的な質問で恐縮ですが、

vbでsendkeysを使って作成しておりました。
さまざまな問題が出たため、apiを使用しキーボードシュミレートを
行うため、下記のサイトを参考に組み込みました。
URLリンク(hanatyan.sakura.ne.jp)

こちらで送信はできたのですが、ポップアップするような
アプリケーションの場合そこで制御が停止してしまいます。

停止せずに送る方法がありましたらお教え下さい。


357:デフォルトの名無しさん
08/05/16 00:21:38
>>351-352
あのなあw
それ以上馬鹿を晒さないうちに黙っていた方がいいと思うよ。

358:デフォルトの名無しさん
08/05/16 02:04:54
>>352

359:デフォルトの名無しさん
08/05/16 02:56:11
VB脳w

360:デフォルトの名無しさん
08/05/16 11:35:01
VB6を使用しています。
ADO2.5のRecordsetオブジェクトを使用し
以下のようなDBを参照し

フィールド1 |
----------
A |
B |
C |

データを
Aを取得し変数にセット→MoveNext
Bを取得し変数にセット→MoveNext
Cを取得し変数にセット
という流れで取得しています。

MoveNextなどをせずに
一気にA B Cのデータを取得し変数にセットをしたいです。
もし可能であればご教授ねがえませんか?


361:デフォルトの名無しさん
08/05/16 11:49:27
ご教授なんて呼ばれても そんな人いません

362:デフォルトの名無しさん
08/05/16 12:19:34
恥ずかしい馬鹿だな。
「ご教授」でもいいんだよ。嘘だと思うなら辞書引いてみな。

DBはやったことないんで質問には答えられなくて申し訳ない。

363:デフォルトの名無しさん
08/05/16 12:28:39
>>362
ご教授なんて日本語存在しませんがw
嘘だと思うなら「間違った日本語」とかでググってみな?w

あ、ゆとりさんに無理ですか そうですか
存在しないものを作りあげてしまうなんて
もうレベルが低すぎてこちらまで恥ずかしくなってきましたw

364:デフォルトの名無しさん
08/05/16 12:31:39
辞書を見て自分の都合のいい解釈する人に何を言っても。

365:デフォルトの名無しさん
08/05/16 12:33:54
それはいわゆる無知な「誤用厨」(まあ今俺が命名したんだけどw)が
勝手にそう言ってるだけ。

だから辞書引けって馬鹿。

ついでにその「誤用厨」が得意げに指摘する「確信犯という言葉の誤用」も
誤用じゃないんだよ本当は。

366:デフォルトの名無しさん
08/05/16 12:41:38
間違ったものを強引に正しいものにしようと必死な人がいると聞いて
飛んできますた

>>365
間違いを指摘されてるんだから、そろそろ悪あがきは止めて あきらめようぜ?ww
お前が馬鹿なのは十分分かったから、これ以上 墓穴掘るなよ

ご教授はどう考えても 存在しない日本語
日本人なら正しい日本語使え、プログラミングとかやる奴ならなおさら

367:デフォルトの名無しさん
08/05/16 12:44:29
あのなあ。
そもそも「教授」って言葉をポストに使う方が元々は派生的な用法だっての。
字面見ればわかるだろそんなの。

368:デフォルトの名無しさん
08/05/16 13:00:50
プログラムは正しくない命令文ではエラーが出るが、
「ご教授ねがう」は「ご教示いただく」のことだろうなってわかるだろ。
教えてやればいいだけでしょ。

お前らそんな固い頭でプログラミングとか向いてないんじゃね。

>>360
文章から、変数は配列じゃないと想定してレスすると、一気に変数に入れるのは不可能。

数が少ないならフィールド横に配置して1レコードにするとか。
フィールド1 | フィールド2 | フィールド3 |
----------
A | B | C |

変数に配列使ってループさせれば解決すると思うけどネ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch