VB初心者質問スレ Part7

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレはこちら
  Part1 = http://piza.2ch.net/test/read.cgi?bbs=tech&key=968328471&ls=50
  Part2 = http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990793224&ls=50
  Part3 = http://pc.2ch.net/test/read.cgi/tech/1000523122/
  Part4 = http://pc.2ch.net/test/read.cgi/tech/1006922992/
  Part5 = http://pc.2ch.net/test/read.cgi/tech/1010624646/
  Part6 = http://pc.2ch.net/test/read.cgi/tech/1013844542/

Win32 API関連スレ
  http://pc.2ch.net/test/read.cgi/tech/1006783012/l50

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調てみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
2?
(・∀・) こういった話題は、こっちの板でどうぞ
http://doomo.org/cgi-bin/bbs1/za.cgi
>>3
サーバーが見つからないってさ。
VB始めてみようと思うんですが、VBAでも同じような事出来ますか?
6デフォルトの名無しさん:02/03/11 22:26
むしろVBAが知りたい。
VBしかやったことないけど(VBも素人だが)、AccessVBAで違う所って
何ですか。確か、DAOとか使うんですよね?
あと、マクロってのも連携して使うもの?全部VBAでも可?
WORD & EXCELのマクロ = VBA、そのままの意味
ACCESSのマクロはVBAが使えればほとんど無視していいと思う
あとACCESSのフォームなので
form.Showとか基本的な作法が違う
DAOでもADOでも可
8デフォルトの名無しさん:02/03/12 15:09
あるプロジェクトに含まれている、フォームやモジュールなど(プロジェクトエクスプローラに
表示されているモノ)の名前と、それらが持つプロシージャの名前だけを印刷するなり
テキストファイルに書き出すなりする方法って無いんでしょうか。

VB用のドキュメント作成ツールとか買わないと出来ないのかな?
>>8
.frmとか.vbpとか開いてみたら?
108:02/03/12 17:10
>>9
ありがとうございます。
vbpを開いてみても、モジュールのファイル名を知るのがやっとで……。
なにかいい方法ありませんかね?
>>10
アドインを作る。
128:02/03/12 17:44
>>11
回答ありがとう。
作るのは無理そうなので、やはり手頃な支援ツールの導入を考えてみます。。
13仕様書無しさん:02/03/12 23:28
>>8
おまえ、本当にプログラマか?恥ずかしいヤツだな…。

> フォームやモジュールなどの名前
> それらが持つプロシージャの名前だけを印刷
vbp開いてファイル名が解ったら、
あとはそのファイルを開いて必要な部分を抽出するだけだろ。

何か難しいことあるのか?
# ま、どうでも良いんだけどさ。

旧スレが上がってるんであげ
14プログラム歴1月:02/03/13 04:09
コードがEUCで書かれたファイルの文字を置き換えしようと思ったんですが
失敗して全部文字化けしたファイルが出てきてしまいました・・

文字コードを見たところEUCのはずが勝手にShiftJisになっている・・

何がマズイんでしょうか・・ヽ(´Д`ヽ ミ ノ´Д`)ノ
15デフォルトの名無しさん:02/03/13 04:25
>>14
変換するコードが間違ってることは確か。
あとはコードを見ないと何とも言えない。

>>14
バイナリで読みこんで文字列に変換してるならStrConvしなよ。
>>13
>あとはそのファイルを開いて必要な部分を抽出するだけだろ。
その手順を簡素化する方法に付いての質問だと思うのだが。

# ま、どうでも良いんだけどさ。
>>14
VBってEUC扱えたっけ?
バイナリで読み込んでバイナリのまま処理するか、
一端SJIS(かunicode)に変換して文字列として処理したあとEUCに変換して保存
するかしなきゃ駄目じゃない?
1914:02/03/13 17:34
とりあえず途中からなんですが・・
変数を宣言した後です。すごい単純なやつかと・・

Open "C:\WINDOWS\デスクトップ\第2のサイト\" & suuzi & "\sylpheed.cgi" For Input As #1
Do While Not EOF(1)
Line Input #1, buff1
buff1 = buff1 + Chr(13) + Chr(10)
buff2 = buff2 + buff1
buff3 = Replace(buff2, "パソコン", "パーソナルコンピュータ")
Loop
Close #1
Open "C:\WINDOWS\デスクトップ\第2のサイト\" & suuzi & "\sylpheed.cgi" For Output As #2
Print #2, buff3
Close #2

↑これで普通のファイルの場合はできるんですが(Shift-JIS)
”パソコン”を”パーソナルコンピュータ”に置きかえる例なんですが・・
で、EUCだから改行コードがchr(13)+chr(10)→chr(10)なのかな・・と・・

それで変えてみたんですが置きかえられたファイルはやっぱり文字化け・・
更新されたファイルが勝手にShift-JISになってました・・
まだ初めて1ヶ月程度なんですが、今の自分技術で可能でしょうか、
これを解決するのは・・
>>19
根本的にEUCと文字コードに関して誤解してるな。
EUCは改行コードが異なるのではなくて、文字コードそのものの位置が全然違う。
だから、専用に変換コードを書くか、DLL使って変換してあげなければいけない。

http://www.geocities.co.jp/SilkRoad/4511/vb/nkf32dll.htm
DLL使うならここを参考に。

手順としては、ファイルをバイナリでバイト配列に読み込んで、
DLLを使ってバイト配列のEUCをShiftJISに変換、
それをStrConvを使ってvbUnicodeに変換、
必要な処理をしたあと、vbUnicodeからバイト配列(ShiftJIS)に変換、
それをまたDLLを使ってEUCに変換、バイナリとして保存。
21デフォルトの名無しさん:02/03/13 18:38
初心者の質問ですが教えてください。
DLLの中の関数の詳細をみるにはどうしたらいいんですか?
2214:02/03/13 19:03
>>20
ありがとうございます
なんとかやってみます!
23__:02/03/13 20:23
>>21
詳細ってどのレベルまでのこと?
24ななし:02/03/13 20:25
>>20

で紹介されているリンク先で、2ch用語が使われていて、ワラタ。(^◇^;;
       ↓
> Q : 文字列を渡せねえぞゴルァ
>>21
あなたが言っているDLLは普通のDLL?それともActiveなDLL?
26デフォルトの名無しさん:02/03/13 23:39
pdfやpptなどのリンクを押してブラウザで表示するのではなく
「ダウンロードしますか?」みたいなダイアログボックスを表示して
HDDなんかに落としたいのですが、VBScriptで出来ると思いますか?
っていうか、どんな言語が適しているのか参考までに思ったことを
教えてください。参考になる本、HPなんかあったらそちらもよろしくお願いします。
2726:02/03/13 23:41
追記です、
exeとかには出来ないんです・・・
ネスケは無視してます。
以上です。
右クリックして保存すれば?
2926:02/03/13 23:58
早速ありがとうございます
そうなんですよね、アドビにもMSにもそう書いてあったんです
でも、「そんなんじゃ駄目だ!」だから困ってるんです
javaScriptでやってみたんですが、WordとかCSVはダイアログが出るんですが
pdfとかは出来ないんですよね・・・・
ダイアログは自作のを出そうかなと思ってるんですが
ほんとにVBScriptで出来るのかも心配なんです

30デフォルトの名無しさん:02/03/14 00:53
わけあって、App.PreInstanceではなくMutexで排他をかけようとしてます。
でWin32APIをつかって、以下のようなコードを書いてみたんですが、なんでか
排他がかかってないみたいなんです(2つ起動してボタン押したらどちらも"最初"がでてきてしまう)。
CreateMutexとかの指定がわるいんでしょうか?

Dim m_hMutex As Long

Public Function MutexCheck() As Boolean
Dim PrevhMutex As Long

PrevhMutex = OpenMutex(MUTANT_ALL_ACCESS, 0, "MyMutex")
If PrevhMutex Then
CloseHandle PrevhMutex
MutexCheck = False
MsgBox "二重起動"
Exit Function
Else
m_hMutex = CreateMutex(0, 0, "MyMutex")
MsgBox "最初"
MutexCheck = True
End If
End Function

Private Function MutexRelease()
ReleaseMutex m_hMutex
CloseHandle m_hMutex
End Function

Private Sub Command1_Click()
If MutexCheck = False Then
' If App.PrevInstance Then
MsgBox "二重起動"
Else
Sleep (3000)
MsgBox "最初"
End If

' MutexRelease

End Sub
31デフォルトの名無しさん:02/03/14 05:14
ディストリビューションウィザードの仕組みなんですが。
えーと、作成するとsetup.exeとsetup.lstとアプリ名.cabが出来ますよね。
setup.exeはCかなんかで作られてて、VBランタイムがない環境でも起動する。
これを起動するとアプリ名.cabを一時的に解凍し、
VBランタイムが勝手にインストールされ、一緒にsetup1.exeも抽出される。
それが終わるとsetup1.exe(VB製)が起動する。
これがインストールウィザードのキモであり、これでインストール先ディレクトリ決めたり、
プログラムグループ決めたりしてるわけですね。
もし途中でキャンセルされると、再びsetup.exeが起動されVBランタイムがアンインストールされる。
と。

これで、たぶんあってますよね。

通常、
C:\Program Files\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1
に入ってるソースは、setup1.exeのもので、
これを作り替えればディストリビューションウィザードの動きも変わる・・と。
そうですよね。
3221:02/03/14 13:54
>DLLの中の関数の詳細をみるにはどうしたらいいんですか?
>>23 >>25

普通の?DLLだと想います。
たとえば、そのDLLにどのような関数が含まれているかを見る方法、
あとはドキュメントが隠されていたりしたらそれを見る方法です。
(関数だけだと、その関数の使用用途がよくわからない場合も多いので)
>>32
dumpbin.exe で関数名とエイリアス名はわかる。
VBにも付属してたっけ?
でも、ドキュメントも公開されていないような関数を
使うのは、引数とかの範囲もわからないわけで、
そういうことはしないで他の方法を探したりする。
>>32
何がしたいの? まさか仕事でやっているんじゃないよね。

関数を見る方法が無いわけじゃないけど
(たとえばVisual StudioについてるDependency Walkerを使う)
普通のDLLなら関数名ぐらいしか分からないよ。
ActiveXなら引数までわかるけどドキュメントなんかは普通無い。

最初っからあやしいことするなら別だけど、ちゃんとしたドキュメントみな。
35デフォルトの名無しさん:02/03/14 15:00
ヘルプの例文に次のようなコードがありました。
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, before:=6, _
temporary:=True)
.Caption = "New Context Menu Item"
.OnAction = "MyMacro"
.Tag = "brccm"
End With
なんとなくわかるのですが、なんか変な気がします。(withの後ろにオブジェクトではなくメソッドが書かれている点)
この場合、with文の中身の.caption等はどこに対応していることになるのでしょうか?
また、このコードをwithを用いずに書くなら、どのようになるのでしょう?
みんなVBやるときエディタなに使ってるんですか?
>>35
最悪だろこれ。だれが書いたんだ。面倒だから動かしてないが、
.AddメソッドはCommandBarControlを返すわな。
.Captionは新しく作られたCommandBarControlにかかっているのだよ。書き直すと、

Dim cbc As CommandBarControl
Set cbc = Application.CommandBars("cell").Controls.Add(Type:=msoControlButton, before:=6, temporary:=True)
With cbc
 .Caption = "New Context Menu Item"
 .OnAction = "MyMacro"
 .Tag = "brccm"
End With

ということだ。cbc使わなくしようと思ったらああなるだろ。
CommandBarあたりはあまり使ったこと無いから型とか間違ってたらゴメンな。
>>36
普通はIDE付属のエディタだろ。あれ以外でコントロールの配置や
RADと統合やらコード補完や定義文へのジャンプやらプログラミング時の
エラーチェックがまともにサポートされているエディタは知らんぞ。

キーカスタマイズできんのが難だがそんなもんは
キーカスタマイズツールで変更すればいいだけだし。
39デフォルトの名無しさん:02/03/14 17:06
VBで配列の要素数ってどうやって調べるんでしょうか?
>>37
なるほど、addメソッドは値を返すんですか。
それですべての謎が解けました。
ありがとうございました。
41デフォルトの名無しさん:02/03/14 17:17
>>39
MSDNで検索できました。
Ubound関数ですね。
42年中無休で働き続ける男:02/03/14 17:24
VBと互換性があって無料のものってありませんか?
Cはありますよね?
VBって無いんですか?
マジで教えてください。
43デフォルトの名無しさん:02/03/14 17:44
>>42
Delphi6
Borlandのサイトに行けば無料で落とせるよ。
44デフォルトの名無しさん:02/03/14 17:56
VBとDelphiに互換性があるなんて初めて聞くぞ。
42が言っているのはフリーなVBコンパイラがあるかということだろ。
インタプリタならあるがコンパイラはない。
・・・という答えであってるかな?
VBCCEってのがMSから無料でダウソできるそーだ。
>38
http://www.vector.co.jp/soft/win95/prog/se072486.html こーいうのがないかなぁって思ったんだよね
47年中無休で働き続ける男:02/03/14 20:57
VBが欲しいです
48デフォルトの名無しさん:02/03/14 20:57
>>47
買いましょう
>>47
働けって。
>>47
どうせ、おまえには使いこなせないからやめとけ。
>>46
VBでもアドインで外部エディタを使えるようにすることもできると思うが
VBに限らずIDEで開発している人は外部エディタなんか使わないと思うぞ。
今はIDEの方がエディタは使いやすいし。
->とか.とか入れたらなんか出てくるところがいいんじゃねーか。
Notepadはすっこんでろ
>>52
ここはVBスレです。
54仕様書無しさん:02/03/14 23:25
>>30
>MUTANT_ALL_ACCESS
この定数の値はどうなってる?

それと…。
> CreateMutex
こいつの Declare文は?

最初のlpSecurityAttributesはポインタだ。
何もせずに 0を渡したりしてるが、もちろん宣言は ByValに変えてあるよな?
556:02/03/14 23:37
>>7
ド亀レスですが、ありがとう。
AccessVBAやってみたよ。
これって、あるコントロールの.Text取ろうと思ったら、
いちいち先に.Setfocusしないとダメなんですか?
もっと、良い方法あるのかな?
>>55
.Value
>>26
>javaScriptでやってみたんですが、WordとかCSVはダイアログが出るんですが
>pdfとかは出来ないんですよね・・・・

IE4、IE5、I5.5、IE6の仕様レベルでのバグなので無理です。
Content-Dispositionの解釈が無茶苦茶なので、勝手に開きます。
環境によってはWordも勝手に開くし、CSVでも勝手に開く。
#こういうことやってるからウィルスにやられるのよ、IEは。

http://www.microsoft.com/japan/support/kb/articles/J050/8/65.asp
http://tohoho.wakusei.ne.jp/lng/199903/99030058.htm

↑他にもあったと思うけど、ちょっと見つからないや。

サーバ側から返すヘッダをIE向けにアレンジしたらダイアログを出すことはできるけど、
バージョンによって、「.」だけとか「XXX.」とかいう変なファイル名がデフォルトで表示されたりする。
バージョンによってもこの辺の挙動が微妙に違ったと思う。

#ネスケだけに対応する場合は、ファイルタイプをapplication/octet-stream
#にすればなんとかなったような・・・・。
58デフォルトの名無しさん:02/03/15 11:34
MSRDCに接続する時、
画面にパスワードなど入力画面画出るのですが、
これが出る前にソースでパスワードを
入れるにはどうしたらいいのですか?
5958:02/03/15 12:01
ORACLEODBCに接続したいのですが、
どういうソースを書いたらいいのでしょうか?
>59
ttp://otn.oracle.co.jp/sample_code/db_connect/odbcasp.html
これくらいはグーぐればすぐ出てくるぞ。
6158:02/03/15 12:41
>60
すいません。
ありがとうございます。
62デフォルトの名無しさん:02/03/15 20:32
pascalの in に相当するような演算子はVBにはないようですが、何かいい方法はありますか?
if a in [1,7,13,17,19,20,21,29,59] then 〜

if (a=1) or (a=7) or (a=13) or (a=17) or・・・ と書くしかないのでしょうか?
これじゃヤだ?>>62
Select Case a
 Case 1 7 13 17 19 20 21 20 59
  '適合する場合の処理
 Case Else 'その他の場合
  'その他の場合の処理
End Select
>>62
その通り。if文を使う限りはそうなる。
ちなみにVBは a = 1 or ... というようにかっこで囲む必要がない。

>>63の方法を使わなければならない。
ひとつ気がついたけど、
> Case 1 7 13 17 19 20 21 20 59

Case 1, 7, 13, 17, 19, 20, 21, 20, 59
という風にコンマで区切る必要があるのでは。
6562:02/03/15 21:00
>>63
>>64
ありがとうございました。
63です。すんません。コンマ要ります。ド忘れました。
67デフォルトの名無しさん:02/03/15 21:37
VBでちょっとしたプログラムを作ってみたんだけど、HSPだったら
「ぽいっ」
とソースを貼り付けできるんだけど、VBだと、困るよね。
どうしたらいいんだろうか。
68デフォルトの名無しさん:02/03/15 22:56
なぜこまる。
「うりゃっ」
と貼り付けて見ろ。

MsgBox "Hello, Bill!", vbInformation, "うりゃ"
69デフォルトの名無しさん:02/03/15 23:30
If 67 = "厨房" Then
MsgBox "イベントドリブンって知ってる?", vbInformation
Else
MsgBox "ネタにマジレス、、、", vbInformation
End If
70  :02/03/15 23:32
質問です。
デザイン時とコード内、どちらでも設定可能なプロパティは、
プロパティウインドウで設定する方がいいのでしょうか?
71デフォルトの名無しさん:02/03/15 23:59
標準モジュールに書くのと、クラスモジュールに書くのの差は何ですか?
てゆか、クラスモジュールのことはさっぱり分からないんだけど。
72デフォルトの名無しさん:02/03/16 00:21
vb の最大の欠点を発見してしまった。
1行がコードの単位だから、あまり長い行が書けない。
Scheme とかだと、改行でうまく構造化できるのに。
73名無しさんです:02/03/16 00:29
>>72
アンダーバー使え
>>72
“_”つけて、途中で改行すればいんじゃない?
75デフォルトの名無しさん:02/03/16 00:51
>1行がコードの単位だから、あまり長い行が書けない。
>Scheme とかだと、改行でうまく構造化できるのに。

_ でつなげられるけど読みやすくはないね。
SQL文をよく書くんだけどダブルクオートとアンパサンドとアンダーバーばっかりで
コードが読みづらくてしょうがない。perlやRubyだと変数展開してくれるし
ヒアドキュメントがあるから何でもないんだけどね。
コードの見やすさと言えば、
変数いっぱい並べてまとめて代入してる所とか、
タブで綺麗に成形したくても=の後はスペース1個に勝手に変えちゃったりするのって
ナントカならんの?
_付けすぎると、VBで読みこみ時に多すぎるとか
エラー吐いてそれ以降読んでくれないんだけど、あれウザイ。
どうにかしろ。仕事にならん
schemeを知っててVB使ってるのか。お気の毒
79デフォルトの名無しさん:02/03/16 01:59
条件付コンパイルってありますよね。
#if DEBUG_MODE then
 デバッグ用のコード
#end if
↑こんなやつ。最近知ったので使い出したんですが、問題はDEBUG_MODEの定義。
今のところプロジェクト内のすべてのモジュールで
#const DEBUG_MODE = true
とか定義して、リリース時にtrueをfalseに一括置換してます。
これが面倒なので、もっといい方法はありませんか?
>>79
条件付きコンパイル引数
>>77
_付けすぎるとVBがごねるのはダメだとして、
それで仕事にならんことはないと思うが。
>>71
デザインパターンを実装するときに使用します。と言ってみるテスト。
>>71
一言であんたが理解できるような説明の仕方があったら
あのMSだってヘルプに書いているだろうな。
まぁ悩め。普通の人間ならそのうちわかるからw
8477:02/03/16 03:43
>>81
そのためだけにソースの方を修正する必要があって困る。

str = "〜" _
& "〜"

str = "〜"
str = str & "〜"

に直してけば直るが、こう何度もおこると
イライラして仕事にならん。
こういう処理系の作り的な不具合(仕様か?)は勘弁してくれ。
こんな制限あるなら最初から'_'なんか無くしちまえ
>70
>プロパティは、 プロパティウインドウで設定する方がいい?

 プロパティは全てデフォのままでコード中から制御する方がデバッグする時に楽だ(と思う)。
 何故なら、コードのみを注視すれば良いから。

 仮にプロパティウインドウにて設定すると、コードに加えプロパティウインドウにも注意しないと
いけないため、コントロール数が多い時追うのが大変。
 ちなみに某社では「コード中に記述する事」というコーディング規約があった。

>71
ttp://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/

>>84
最初っからそう書けばいいのでは?
どうせ_で問題が起きるのはSQL文くらいなもんでしょ。
>>71
FileSystemObjectのようなものを作ってみたら?
標準モジュールでは問題があることが分かると思うよ。
>>84

サンプルなのでどうでもいいが、strなんて変数はやめとけ。
標準の関数名だから。

>str = "〜" _
>& "〜"

と書くのがそもそも間違い。

>str = "〜"
>str = str & "〜"

sql = ""
sql = sql & "select"
sql = sql & " fieldA AliasA"
sql = sql & ",fieldB AliasB"
sql = sql & ",fieldC AliasC"
sql = sql & " from"
sql = sql & " tableA AliasTA"
sql = sql & ",tableB AliasTB"
sql = sql & " where fieldA = 'あああ'"
sql = sql & " and fieldD = 'いいい'"

とか書く。経験的にこれがベターだと思う。
ま、問題は、selectの直後のフィールドとwhereの直後の条件だけ
書き方が例外的になるところかな。(この書き方の問題ではないが)
8970:02/03/16 09:19
>>85
ありがとうございます。
たしかにそうですね。コードで全部設定すればプロパティウインドウは気にしなくて
いいですね。
……ただ、そうすると実行ファイルのサイズが大きくなったり、実行速度が低下したりは
しないのでしょうか?
90デフォルトの名無しさん:02/03/16 09:20
ちなみに、「_ 」(アンダーバー+半角スペース)の
行継続文字の使用は25個までだ。

各種制限事項はMSDNで一箇所にまとまってるから、
嵌りたくなければ、常識として目を通しておくように。
http://www.asia.microsoft.com/japan/developer/library/vbcon98/vbconvisualbasicspecificationslimitationsfileformats.htm
VBAスレってないみたいなんだけど VBでいいのかな
>>91
いいんじゃない。
>>89
当然大きくなるし、遅くもなる(微々たるもんだがな)。
気になるならプロパウィンドウで設定すればいいじゃん。
完璧なもんなんかあるわけねーだろ。
94デフォルトの名無しさん:02/03/16 15:49
VBと言うよりVBAなのですが、MS-Projectのマクロから
他のMS-Projectファイルを裏で起動させて
そのファイルの内容をコピーして、利用したいのですが、マクロから
MS-Projectの起動方法が分からないのです。
どなたか、知っておられる方がおりましたらご教授下さい。
9530:02/03/16 16:08
>>54 亀レスすみません。

>>>30
> >MUTANT_ALL_ACCESS
> この定数の値はどうなってる?

Const MUTANT_ALL_ACCESS = &H1F0001
です。

> それと…。
> > CreateMutex
> こいつの Declare文は?
> 最初のlpSecurityAttributesはポインタだ。
> 何もせずに 0を渡したりしてるが、もちろん宣言は ByValに変えてあるよな?

こんなかんじです。
Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" ( _
ByVal lpMutexAttributes As Long, _
ByVal bInitialOwner As Long, _
ByVal lpName As String) As Long


・・・実はDeclareをFormとは別の標準モジュール中で宣言してたんですが、もしかしてそのせい?
9694:02/03/16 16:13
ヘルプにある

Dim pj As Object

Set pj = CreateObject("MSProject.Project")
pj.Application.FileOpen "My Project.mpp"

を試して見たのですが、「書き込みに失敗しました」とエラーが
出てしまいます。 何がいけないのでしょうか?
9777:02/03/16 16:15
>>86 >>88
あのなあ、そんなことはわかってんだよ。
引継ぎってやつを知らねえのか?
最初から自分で作る分はそれで書いてるよ。
それからな、strは例なわけよ。今は変数名の議論なんかしてねえだろドアホ!
あーヒアドキュメント使いてー
ふつーのSQL文を文字列に直すのだけで一苦労だっつーの。
二重引用符うぜー

>>90
不具合を常識とか言ってんなヴァカ!
9877:02/03/16 16:23
そもそも'_'にそんな制限つけるほうがバカだね。
_付けるぐらいだから長いに決まってんだろーが!
コメントにまで_適用しやがるし、もう使えねーよVB。
9994:02/03/16 16:29
何か参照設定でもあるのでしょうか?。。。。
>>97
> ふつーのSQL文を文字列に直すのだけで一苦労だっつーの。
あんたPerlつかえるんだろ?
だったらPerl使ってSQL文整形すればいいじゃないか。
そうすりゃ、"_"から"str & 〜"への変換も楽だろ。
俺はawk使ってるけどな。
SQL文→VBの文字列、VBの文字列→SQL文への変換もそれでやってるし、
フィールド名なんかはドキュメントから変換して使うから
長いSQL文でもなんの苦にもならねぇんだが。

プログラマなら口出す前に頭使えよ。
101デフォルトの名無しさん:02/03/16 17:08
>プログラマなら口出す前に頭使えよ。
うるせー馬鹿
102100:02/03/16 17:31
>>101
ほらよ。awkで作った変換スクリプトあげるから、ヘソ曲げるな。perlじゃなくてすまんな。
作成時間数分程度のちゃちいものだから変換結果が気に食わなかったらカスタマイズしてね。
コマンドライン操作がイヤなら適当なGUIでもさがして。ちなみに俺は自作。

普通のSQL文をVBの文字列連結に変換する
{
print "str = str & \"" $0 "\"";
}

アンダーバーから文字列の連結に変換する
{
s = $0;
gsub("& _$", "", s);
print "str = str & " s;
}
103デフォルトの名無しさん:02/03/16 18:08
普通自作関数で整形するかエディタでなんとかするよな>SQL

効率悪い仕事しかできない奴ほどすぐ環境のせいにする罠
104デフォルトの名無しさん:02/03/16 18:13
VB6を使っています。
デスクトップフォルダまでのPath名を取得したいのですが
どのようにすればよいでしょうか。ご教授ください。
OSはWin95からWin2000までです。
10594:02/03/16 19:32
VBと言うよりVBAなのですが、MS-Projectのマクロから
他のMS-Projectファイルを裏で起動させて
そのファイルの内容をコピーして、利用したいのですが、マクロから
MS-Projectの起動方法が分からないのです。
どなたか、知っておられる方がおりましたらご教授下さい。

ヘルプにある

Dim pj As Object

Set pj = CreateObject("MSProject.Project")
pj.Application.FileOpen "My Project.mpp"

を試して見たのですが、「書き込みに失敗しました」とエラーが
出てしまいます。 何がいけないのでしょうか?
106デフォルトの名無しさん:02/03/16 19:48
awkって結構使ってる人いるんだ?
10777:02/03/16 20:57
>>102
さんくすこ。


>>103
>普通自作関数で整形するかエディタでなんとかするよな>SQL
はあ?
何いってんの?
108デフォルトの名無しさん:02/03/16 21:03
>>107
いいからさっさと死ね
109デフォルトの名無しさん:02/03/16 21:24
>>77
使えないのは、VBじゃなくて
最初に糞コード書いた奴&>>77だろ
何でもVBのせいにするなよ。
110デフォルトの名無しさん:02/03/16 22:47
inetの使えないLearningEditionのVB6に愛の手を・・・
WEB上のHTMLページのソースを取得したいのですが、
ient.OpenURLを使うことが出来ません。
他に方法があると思うのですが紹介をお願いします。

VBAでも同様にソースを取得したいのですがお願いして良いでしょうか...
111デフォルトの名無しさん:02/03/16 22:55
>>110
Learning Edition については、よく知らないが、
Winsock コントロールもついてこないのかな?
112110:02/03/16 23:14
>>111
ええそうなんです...
ここにはExcelVBAで繋いでるスクリプトがあるんですが
ソースが公開されていない・・・
ttp://isweb31.infoseek.co.jp/computer/denoyaji/vba_kowaza.html

あちこち回っているのですがなかなんか収穫ありません。
また少しgoogleで回ってきます
113例え君:02/03/16 23:59
すいません。僕の例え話に付き合ってください。

標準モジュールとクラスモジュールの違い

A君は標準君というロボットを開発しました。
標準君は人間としか思えない動きを連発しました。大発明です。
みんな大騒ぎです。天才!天才!A君は大変喜びました。
そのころ、B君もクラス君というロボットを開発しました。
クラス君も人間としか思えない動きを連発しました。これまた大発明です。
標準君とクラス君どちらが勝つのか。A君は自信満々でした。
「標準君の方が発売日が一週間早い。勝ったも同然だな。」
結果、B君のクラス君が圧勝でした。標準君は忘れ去られました。
何故でしょうか?答えは簡単です。
標準君はすべてのロボットが同じような動きしかしませんでした。これでは面白くありません。
しかしクラス君はそれぞれのロボットに性格(プロパティ)を設定することが出来たのです。
性格が違えば行動も違う。怒りっぽかったり、泣き虫だったり…
これは面白い。こうしてB君は歴史に残る発明家となったのです。

よくわからないけど、こんな感じなのですか?
114デフォルトの名無しさん:02/03/17 00:10
>>113
OOのたとえ話って言うんなら解るけど
VBのクラスモジュールの例え話としては大げさな感じがする。
115デフォルトの名無しさん:02/03/17 00:14
>>113

クラスモジュールはたこ焼き器だ。
たこ焼きを量産できる。具をたこの代わりにイカを入れてもいい。
てんかすをいれてもいい。

標準モジュールは1つしかボール上の凹みがないたこ焼き器だ。
1つしか作れない。
116115:02/03/17 00:14
ボール上→ボール状
117例え君:02/03/17 00:46
>>115
なるほど。プロパティを具に例えることによって
具を変えると味が変わるという簡単かつ明瞭な方法で、クラスモジュールを例えられている!
しかも具が違ってもたこ焼きの外見は変わらないというところが実にいい!

標準モジュールというたこ焼き器も、↑と同じことをしようと思えば、
そのたこ焼き器本体自体を大量購入しなければならないという効率の悪さを上手く表現している!
天才だ…
118デフォルトの名無しさん:02/03/17 00:49
テキストボックスとラベルを貼ったフォームがあって、
ラベルをクリックするとテキストのValidateがおき、
GotFocusがおきずにフォーカスがテキストに戻るのですが、
世の中そういうものでしょうか?

ラベルを連打するとValidateだけが何度もおきる・・・
>>118
そういうもんです。一つ賢くなりましたね:)
120デフォルトの名無しさん:02/03/17 00:57
ここのBBS↓読めねぇぞゴルァ
http://www.users.gr.jp/WebBoard/show.asp?1058.htm

ユーザー登録とかちゃんとしてるんだけどなぁ〜一応。
121デフォルトの名無しさん:02/03/17 01:54
VBでクラスのインスタンス?(Newしてできる複製のこと)
を作るときインスタンスごとに初期化したいクラス内の変数
があります。
 初期化はどうしたらいいのでしょうか。

Formの生成の場合もそうなのですが、
現在は初期化の方法がわからないので、インスタンスを1個以上
作ったことがありません。

よい方法が見つからないのですが、なにかよい方法はないでしょうか?
どなたか教えてください。
122例え君:02/03/17 02:04
インスタンスに挑戦。
マクドナルドでメニュー(ツールボックス等)を見て、食べたい物(クラス)を決めて、
店員(VisualBasic)に食べたい物を言うと、店員がそれと同じ物を作って出してくれる。
これをインスタンスと言う。

>>121
僕は例えているだけで、あまり使い方はしりませんが、
>>85さんの書き込んでいるリンク先のインスタンスの誕生と終焉という
ところに書いてあった気がします。
123デフォルトの名無しさん:02/03/17 02:16
フォーム全体の大きさではなくて、
テキストボックスとか、リストビューなどの
コントロール自体を、マウスのドラッグでリサイズするには、
どうすればいいのでしょうか?

例えば、Webブラウザのフレームの境界をドラッグして、
リサイズするみたいなことをやりたいのですが、
どのコントロールを使うのかもわかりません。
お願いします。
124デフォルトの名無しさん:02/03/17 02:37
>>122 情報ありがとうございます。

<<このような場合は、クラスモジュールのイベント Initialize
と Terminate を利用します。>>
と書いてありますが、わたしがやりたいのは、たとえば

 Private 赤_りんご As New clsりんご(iro := "赤")
 Private 青_りんご As New clsりんご(iro := "青")

のような感じなのです。

 私の感じでは「クラスのインスタンスを生成する側が
初期値を指定できないと使いづらいというか、
クラスの意味が半減?する気がします。」

 そんな馬鹿なことはないと思いますので、なにか方法があるように
おもうのです。Initializeにたいして、(インスタンスを
作成する側は)初期値を渡せるのでしょうか?
>>124
引数付きコンストラクタはありません。
VB.NETからはできるようになっています。

初期化用メソッドを各クラスに作成し、
必ず実行すべしという自分ルールを作るくらいしかありません。

標準モジュール(例えばConstructor.basとする)を使って、
Public Function Class1( _
ByVal arg1 As String, ByVal arg2 As Long) As Class1

Set Class1 = New Class1
Class1.Init(arg1, arg2) ' クラス側で初期値設定用のInitメソッドを用意しておいてね。
' 後、Initメソッドはここ以外で呼ばない。このクラスのインスタンスが必要なときは、
' Newではなくこの関数を経由すること、という取り決めを守ってね。
End Function

とかいう風にすると、
Dim c As Class1
Set c = Class1("引数1", 100)

のようにすることもできますが、所詮は見た目だけです。
126デフォルトの名無しさん:02/03/17 06:20
>>89
エディタで一回frmファイルを開いてみる。

>>113
結局、「クラスはカスタマイズ可能」というだけ?
たとえ話を考えようとした努力は認めるけど。

>>123
簡単ではない。
ラバーバンドで表示して、マウスボタンを離したらリサイズ
するのなら、なんとか書けるかな。
127デフォルトの名無しさん:02/03/17 11:58
TDBGRIDで、何行目を選択する
って言うのをマウスを使わずに
ソースでできますか?
128127:02/03/17 17:30
簡単なことだた。
12926:02/03/17 22:00
>>57
不可能だと分かりました・・・・・
参結構悩んだ人がすでに居たんですね参考になりました。
ありがとうございました。
130デフォルトの名無しさん:02/03/17 22:13
AccessやExcelのVBAコード入力中に、VBのようにF1キーでMSDNを
開くことは出来ないのでしょうか。
知りたい単語にカーソル合わせてF1で開けたら便利なんだけど。。。
>>123
SetWindowLongでスタイル変更してリサイズ可能にできるが、
VBのデザイナのようにはならない。
132131:02/03/18 00:24
>>123

>例えば、Webブラウザのフレームの境界をドラッグして、
>リサイズするみたいなことをやりたいのですが、
>どのコントロールを使うのかもわかりません。


アプリケーションウィザードでエクスプローラ風スタイルを
選んでアプリの雛形を作れば、その中に実現しているコードがある。

従来のVBにはそういうコントロールは付属していない。.NETにはSplitterがあるけどね。
133124:02/03/18 02:47
>>125
ありがとう

>引数付きコンストラクタはありません。
>VB.NETからはできるようになっています。

長い間疑問に思っていたことが、漸く理解できました。
VBは少しだけ、欠陥があったわけですね。
 VB.NETでは関数がreturnで戻り値を返せるようになった
そうですね。これも長い間疑問に思っていました。
134デフォルトの名無しさん:02/03/18 02:52
>>126さん >>131-132さん
ありがとうございます。
VB6.0には専用のコントロールはないんですね。
とりあえず、「できたらいいな」っていう程度の
状況なので今回は諦めて、暇なときにいろいろ試してみます。

ひょっとすると、別々のフォームに載せちゃって、
一方のフォームの大きさや位置に応じて、
他のフォームを変形させる方が楽かも、とか思ってます。
デスクトップ上の位置を取得するのも面倒かもしれませんが・・・

とにかく、教えていただいてありがとうございました。
では。
135123 & 134:02/03/18 03:40
フォームのtopとか、leftってデスクトップ上か、
親ウインドウの座標になるんですね。
初心者すぎてよくわかってませんでした。
136  :02/03/18 11:55
 ビジュアルベーシックには、文字データや数字データを全般的に指したり、判別するステートメントや関数はありますか?
例えば次のような場合に使いたいのです。

 もし a = 文字だったら、
    ・・・・・・する。
 そうではなく a = 数字だったら、
    ・・・・・・する。

 もしあれば教えてください。
>>136
Isなんたらで出来るけど、
なんか文面が引っかかるなぁ。データ型って概念ちゃんとあるよね。
Variant型の中身を調べたいってんなら、TypeName関数ってのもある。

が、そういう使い方はキモイよ。
何の為に型宣言をするのかを考えてみてね。
オーバーロードを無理矢理実現するのに使えることが…。
ふつう使わないけど。
あと、VarTypeやTypeOf
141 :02/03/18 15:04
 string変数内の文字と数字を判別したいのです。
それなら>137が提案している案。
この場合はIsNumericか。
でも注意点が一つ。
IsNumericは数値に変換できるか調べるのであって
すべて数字であるかを調べるのではない。

たとえば、
IsNumeric("&H10")はTrueになる。なぜなら数値(16進数表記の16)のことだから。
全部数字であることをチェックするには関数を作らなければならない。
ループして一文字ずつチェックをするだけだから簡単でしょ。
144( ´∀`):02/03/18 16:49
リストビューの項目の削除のやり方がわからんYO
MSDN見ても載ってない…
だれかおせーて
145デフォルトの名無しさん:02/03/18 17:00
144に便乗質問。
リストビューの各列って色変えれたっけ?
146 :02/03/18 17:08
>>143 それつくってるんですよ
>>144
object.Remove (index)

ってmsdnに載ってるぞー。
ListView1.ListItem.Remove 1
とかいう風に使う。
ごめん、間違い。
ListView1.ListItems.Remove index
ね。ListItems。S入れ忘れ。
149144:02/03/18 17:32
>>148
ありがとう おじさん!
150デフォルトの名無しさん:02/03/18 18:52
「VBCCE」ってのを使っています。


質問1.
読み込み専用のテキストボックスってどうやったら良いですか?
KeyPress イベントで KeyAscii を0にすれば入力は禁止できますが「DEL」キーで文字が削除されてしまいます。

質問2.
複数行テキストボックスでリターンで改行する際にデフォルトのボタンがあるとボタンの入力になってしまい改行できません。


どうにかしてください。
やだ。
>>150
1:Text1.Locked = True にする。
2:デフォルトのボタンを設定しない。
153:02/03/18 20:33
ぼくはC言語を勉強したとき、DOSプロンプトで実行するものしか作らなかったのですけど、
C言語でVBのようなテキストボックスやコマンドボタンを作れるのですか?
154:02/03/18 20:33
スレ違いですが、続いて聞きたいことがあるのでぜひおねがいします。
155まとれす:02/03/18 20:41
>>130
直接は無理だけど、アドインを作ればおっけー

>>139
オーバーロードとは言えないと思うぞ

>>144
ListItemsだったか? コレクションの使い方を学べ

>>145
SubItemのBackColor

>>150
Lockedはなかったか? Enabledでどうだ。
なんか、プロパティで制御できたような気が・・・
ダメなら、メッセージかスタイルの設定だな。

>>153
できるぞ。かなーり面倒だがな。
156仕様書無しさん:02/03/18 21:25
>>110
Inetコントロールの実態は、WININET.DLLだ。
Internnet〜系のAPIを自分で宣言して使うしかなかろ。

http://www.mitene.or.jp/~sugisita/family/papa/vb/index.html
ここでも行ってみれ。
157デフォルトの名無しさん:02/03/18 21:39
VBのブラウザコントロールって自分の環境のバージョンのIEですか?
同じディレクトリに置いた外部CSSとか読めますか。
158:02/03/18 21:39
やっぱりできるんですか。
「C言語でできないことはない」といってる友人がいるのですが、VBのようにテキストボックスとコマンドボタンをひとつずつ配置して、
テキストボックスに何か値が入っているときだけコマンドボタンを有効にするっていうのは可能ですか?
VBのChangeイベントみたいな感じでです。
>>158
その友人は正しいよ。
VBで作れてVC++で作れないアプリはない。

それも出来る。イベントじゃなくメッセージだけど。
>>158
そのC言語の商品名とバージョンが少し気になったりする。
161:02/03/18 21:57
>>159
かなり「できる」友人です。やっぱり彼は正しかったんですね・・・。
Cを勉強してたとき、ポインタで挫折するという典型的なパターンを踏んだぼくから見れば、Cのできる人は尊敬に値しますねえ。
VBならコントロールごとに分けて考えることができるので、まだわかりやすいような気がします。
>>160
詳しいことはわかりませんが、学校で学んだCではDOSプロンプトで実行するやつ(コンソールアプリケーションとかいうのを選択してやってたような気がします)の後に、
授業が分かれて、彼はMFCとかいうのをやる方を選択したようです。
162まとれす:02/03/18 22:12
>>157
そういうこと。読めると思うけど・・・

>>158
もちろんできる。

>>161
ポインタで挫折するのはしょうがない。が、アドレスについて理解するように
すれば、いずれマスターできると思うぞ。
163デフォルトの名無しさん:02/03/18 22:45
構造体ってのがよく分かりません。
なんの為に、たくさん宣言するんですか。
使い所を教えて下さい。
164まとれす:02/03/18 22:52
#まとまってないが・・・

>>163
同じタイミングで使う変数は、ひとつのところにまとめておいた方が、間違いが少なくなる。
たとえば、Aという関数で10個の変数を初期化し、それをBという関数に渡すとする。
10個の変数を別々に使うと、抜けがでたりすることもあるだろ? 引数を10個指定するのも
面倒だし。

そういうとき、構造体を使ってれば、まとめて扱うことができる。

#以下余談

これ、オブジェクト指向プログラミングで重要になってくる、カプセル化につながる
重要な考え方だ。実際、クラスは構造体に関数を加えたものに過ぎない。
165163:02/03/18 23:01
>>164
ありがとうです。
初期化、引数の渡しやすさなど、なんとなーくですが分かった気がします。
精進します。

>>161
MFCはCというよりVC++だなぁ。
MFC使わない場合でも、Win32API使えばOKだけどね。その場合はCでもC++でも、
DelphiでもVBでも同じようなものだけど。
(VBやDelphiでAPI使ってウインドウ作るのは馬鹿馬鹿しいが。)
alphablendを使えば使うほどPCが重くなるんですが、何を解放すればいいんでしょうか。
168デフォルトの名無しさん:02/03/19 01:41
あの、これから始めるはどのようなソフト買えば
いいのでしょうか?当方プログラミング未経験です。
お願いします。
>>168
勉強したいだけなら買う必要はないぞ。
VBなら制限はあるがフリーでVBCCEがあるし、
JBuilder、Delphi、Borland C++ Compilerなんてのもフリーだ。
他にも色々フリーであるからとりあえず触ってみるのもいいかも。
つーかVBなんて使うな
171デフォルトの名無しさん:02/03/19 03:48
>>150
>読み込み専用のテキストボックスってどうやったら良いですか?

Labelで十分。凹ませたかったらBorderStyleプロパティいじれ。
>>170
一部で需要があるから仕方ない
173まとれす:02/03/19 07:38
>>167
別に解放するものなんかないんだが・・・ 他の部分を疑ってみれ。

>>168
>>169も言ってるように、フリー版やお験し版で試してみるのがいいぞ。

>>170
なんでだ? 理由を述べよ。


174本気な名無しさん:02/03/19 12:10
だれかーーーーー
VB6.0なんだけど、ComboBoxでAddItemでデータを入れて、
そのデータを選んだときにイベント発生させたいんだけど、
combo1.change() ってやつではそのAddItemで追加したデータを選択した
だけではイベント発生してくれないみたいなんです。
これを、AddItemで追加したデータを選択しただけであるイベントを発生させるには
どうしたらいいんでしょうか?
2ちゃんねらーの方々よろしくおねがいしますです。
175読まずにカキコ:02/03/19 12:16
>174 combo1.Clickを使え
176本気な名無しさん:02/03/19 13:00
あああああああああああーーーーーーー
ほんとだぁできたーー^^
ほんとしょうもない質問してすいませんでしたーー(’▽’)ノシ
177177:02/03/19 15:28
VB で 8.3 以上のディレクトリ名を含むフルパスから、8.3 の
短い名前のディレクトリ名のフルパスは、どうすれば取得できる
でしょうか?

過去ログ(HTML化待ち以外)はざっとさがしましたが見つけられません
でした。
178177:02/03/19 15:43
dir /x の結果から作れないことはないんだけど、もっと簡単な方法が
あるはずだ。
179デフォルトの名無しさん:02/03/19 17:05
RetVal = Shell("C:\TEMP\TEST.exe", 1)
ってやって
このファイルが存在しない時
実行時エラー53
ファイルが見つかりません
っていうエラーがでるんだけど
ON ERRでつかめないんだけど…
何で????
180デフォルトの名無しさん:02/03/19 17:20
× ON ERR
○ On Error
うちの外注もよくやる。
>>177
FileSystemObjectのShortPath
ところで2ちゃんねる以外で探してる?
182177:02/03/19 17:49
183177:02/03/19 17:52
>>182 は誤爆

>>181

サンクスです。一応、Google で適当なキーワードで検索してみたんですが、
FileSystemObject の ShortPath にはたどり着けませんでした。

MSDN にも ShortPath メソッドが載ってないのは古いからか。

試してみます。
184デフォルトの名無しさん:02/03/19 18:45
Option Explicit とは反対の機能というか、使われていないが宣言されている
変数を見つける機能みたいなものはありますか?
185まとれす:02/03/19 19:06
>>177
GetShortPathName() もあるぞ

>>179
トラップできるぞ

>>184
ない。アドインつーか、分析ツールみたいのでそういうのが
あったな。フリーソフトで探してくれ
186デフォルトの名無しさん:02/03/19 19:12
ヘルプ!
VBインストールしたフォルダと違う場所にMSDNインストールしちゃって、
VBでカーソル位置の単語をF1でとれないんですけど、
これを今から関連付けすることは出来ないですか?
再インストールしかないのかー!
187デフォルトの名無しさん:02/03/19 19:19
>>180
>>185
できました…
180さんまさしくそれでした…
アフォですんません
仕事片付けたら逝きますDEATH
188デフォルトの名無しさん:02/03/19 19:46
質問です。

 プログラムからマウスポインタを動かすことはできますか?

お願いします。
>>188
mouse_event
190まとれす:02/03/19 19:59
>>186
どうだったかな。どっかで見た記憶があるんだが思いだせん。
再インストールは、確実な回復策だな

>>188
できる。SetCursorPos() だ。mouse_event()、SendInput()辺りもついでに調べろ

191デフォルトの名無しさん:02/03/19 20:06
Private Declare Function SetCursorPos Lib "user32" _
(ByVal x As Long, ByVal y As Long) As Long
1926:02/03/19 21:03
AccessVBAやってみました。
VBと同じようにADOでレコードセット取得してDBと繋いだつもりが、
「データベースまたはオブジェクトは読みとり専用であるため、更新できません」と
エラーが出て更新処理が出来ません。
これはなんでですか?VBと同様にやっちゃダメだった?
1936:02/03/19 21:04
ちなみに
Recordset!氏名 = cboName.Value
を実行したとこでエラーに。
179を見て初めてOn Error 〜のErrorの部分に何を入れてもいいということに
気づいたんだけど、これってなんかいい使い道ある?
195まとれす:02/03/19 22:07
>>192
単に、ファイルが読取専用になってないか? あとは、Connectionを
開くときの設定はどうなってる?

>>194
On 〜 Goto の名残、ってことか。下手に使うと構造化プログラミングを壊すし、
やめておいた方がいいぞ
1966:02/03/19 22:41
>>195
ありがとうございます。

普通にSQL組んで
Recordset.Open strSQL, Connection, adOpenStatic, adLockOptimistic
と、こんな感じですが。。。
197168:02/03/19 23:14
>>169-173
ありがとうございます。
今日本屋へその手の本見てきたのですが、やはりMS公式の
本を買ったほうがいいんでしょうか?それとも初めからやる
にはもってこいの参考書があればお聞きしたいです。
198まとれす:02/03/19 23:24
>>196
考えてみると、Staticカーソルを今まで使ったことがなかったぞ

↓とか見ると、更新できないようにも読める。他のカーソルタイプを試してみろ
http://www.zdnet.co.jp/help/howto/win/win2000/0007special/complus_vb/chap1/05.html#lock

あと、接続文字列に問題がある可能性もあるので、それも出してみろ
199まとれす:02/03/19 23:26
>>197
まず、何をやるか決めろ。その後で推薦図書スレで聞いても遅くないぞ

なお、MS公式は、あまりお勧めできない。
200デフォルトの名無しさん:02/03/19 23:31
>>184
フリーソフトのdimdelete
201168:02/03/19 23:32
>>199
どうも。いやはや何が分からないのか分からない状態です。
今まで事務処理だけだったのがいきなりシステム関係に
放り込まれてしまいました。で、4月までに何か覚えとけと
の事でVBを選んだんですが、何が何だかさっぱりです。
これを覚えれば応用でC++覚えられると聞いたんでとりあえず
基礎を全部覚えたいです。よろしくお願いします。
202まとれす:02/03/19 23:49
>>201
そらー大変だな。正直同情するぞ。

で、実際のところ、どの程度の力を求められてるんだ? それから、Excelマクロでも
いいからプログラム経験は?

会社に開発言語があるなら、買うことについて悩む必要は無いな。
VBでいいだろう。とりあえず、基礎的な部分とデータベースアクセスさえ
できれば、なんとかなると思うぞ。
VBの応用でC++を覚えると。危険行為ですな。
204デフォルトの名無しさん:02/03/19 23:53
>>201
「これを覚えれば応用でC++覚えられると聞いた」
世の中にはひどい嘘を言う人もいるんだな。

同情するしかできない。
205デフォルトの名無しさん:02/03/19 23:54
一部ASPが絡みます。あらかじめ失礼。

ActiveReports2.0 + ASPで、PDFを直接ブラウザに送り込んでバーコードを印刷
しようと考えています。ヘルプを読んでいる限りStandardEditionでも出来そう
なですが、「エクスポートフィルタを用いてバイト配列に出力したものを直接表
示」というヘルプ内の記述に対応するサンプルコードが見つかりません。

「オメーの目は節穴か、ここを見れ」でもOKですので、アドバイスをお願い致し
ます(拝)

また、この動作方法を採る場合に気をつけなければいけない点などありましたら
合わせてアドバイス頂ければ幸いです。

……ActiveReports2.0って、まだみんな使ったこと無いのかな?(T_T)
206デフォルトの名無しさん:02/03/19 23:59
VBだけ覚えてもクソの役にも立たないって噂本当ですか?
無難にJAVA覚えてといたほうがいいっすか?
VBだけじゃまともなプログラマになれる可能性は低い。
いきなりJavaやると挫折する可能性が高い。
仕事で急いで覚えないといけない、というのでなければ、
実際にアプリを組んでみながら言語の勉強もするのがいいと思う。
208167:02/03/20 00:08
>>173
どうやら間違ってたみたいでTransparentBltを
使いまくるとGDIリソースを消費するみたいです。
スクロールバーで値が変化するごとに使ったらすごい勢いで減っていきました。
サンプル作ったので見てもらえませんか?
http://www.geocities.com/adkteddo/transparentblt.zip
ソース汚いかもしれませんが・・・
209まとれす:02/03/20 00:13
>>203
そういうステップもある。一概に否定するな

>>204
せいぜい「C++を覚えられるステップになる」だな

>>205
おまえ、MLでも質問してたな。とりあえず、PowerTools ML行け
それから、DataDynamics のサイトはいったか? あっちにはいろいろ
サンプルがおいてあるらしいぞ。

>>206
今のところ「だけ」でも、仕事はある。将来はわからんがな。
Javaはサーバー周りはあるが、クライアントはない。ちょこちょこ
やるなら、まずはクライアントからじゃないか。

>>207
「まともなプログラマ」の定義が難しいところだな。今から見たら
コボラーなんてまともなプログラマとは言えんぞ。だけど、仕事は
それなりにある。ま、10年後、VBが残っているかはわからんが。
210デフォルトの名無しさん:02/03/20 00:17
まとれす氏は現役バリバリのプログラマーなんですか?
芸暦どんぐらいなんですか?
211まとれす:02/03/20 00:19
>>208
こっちの環境では問題ないぞ。XP + VB6 SP5

ざっとヘルプとKBをあたってみたが、とくに問題もなさそうだ。
環境は何だ?
212まとれす:02/03/20 00:23
>>210
芸歴はそれほどない。VB2が出たころからだ。周りの連中がそうであるように、
現役バリバリとはイカン。年を食ってくると、いろいろほかにやらなくちゃならんことも多い。

書いてるコードの量は減ったが、まだまだ若いもんには負けてられん、というところだ。
213188:02/03/20 00:23
>>189>>190
ありがとうございます!ちょっと遠隔操作チックなことに興味があったんで。
214デフォルトの名無しさん:02/03/20 00:30
>>212
そうなんですか。この世界ってスキルが全てみたいなとこ
あるじゃないですか。打てなきゃ仕事にならないわけですし。
やっぱ色々大変なんですねー。それでは。
215167:02/03/20 02:21
>>まとれす氏
レスありがとうございます。
こちらの環境は98 + VB6 SP5です。
XPだと問題ないのかなぁ。
216仕様書無しさん:02/03/20 03:00
>>167
Win98SE+VB6+SP5で動かしてみたが、
確かにGDIリソース食いつぶすね。
まとれす氏の場合、XPは NT系列だから大丈夫なのかも。
# NTにはリソースの概念はないはず

で…
リークしてるのは、TransparentBltの方だな。
msimg32.dll 自体がリークしてんじゃないか?
これを使わずに、自力実装っつーのが一番安全かもしれん。
前スレでも聞いたんだけど、タスクマネージャのアプリケーションの所に
アイコンを表示させない方法知ってる人いる?ぜひ、おせーて下さい。
218205:02/03/20 09:49
>>209
申し訳ありません。流石に一つもレスがつかないと、ちょっと心配になりまして(^^;

MLについては、早速申し込みしておきました。DataDynamicsについては……頑張って英語読んでみます(^^;

219デフォルトの名無しさん:02/03/20 15:48
厨房質問ご容赦を

クライアントからの指定でVB+MDBの構成で依頼を受けています。
現場レベルではクライアント5台位で共有したいそうです。
この場合、ファイル共有型のDB共有となると思いますが、
行レベルロックってできますか?(むりそう)
それともコーディングで更新検出すればいいですか?

Vb4std以来触っていないので不安。
BCB+IBの提案しているんですが、花鳥さんが頑固で・・・
>>219

MDBのかわりにMSDEという選択肢も有るよ。
221VC挑戦中:02/03/20 16:51
>>219
レコードロックはできないからMDBの共有は100%やめた方がいいよ。
何度も痛い目見た。
220が言うように、MSDEなら無料だし。
どうしてもやりたいなら、全テーブル(トランザクションと、マスタ系)にロック。
っていうフォールド持って、そこにフラグを立てる。
フラグが立っていないデータだけ更新可能。と。
でも、MDBは最適化&修復は必須です。
222デフォルトの名無しさん:02/03/20 16:58
MS VBScript Regular Expression5 を使用した上で、

"<title id=38/>"
を、$titlearray[38]で置き換えるにはどうすればいいですか?
(38の部分がどんな数字がきてもいいように)
>>219
ACCESS2000のMDBと同じバージョンのMDBなら行単位で出来るのでは?
やった事無いので推測でスマン
224デフォルトの名無しさん:02/03/20 17:25
既出ならスマソ

Dim i As Integer
i = 12 / 4 + 0.5
i = 16 / 4 + 0.5

この計算でiが両方4になるのは何故?
225デフォルトの名無しさん:02/03/20 18:05
チャートコントロールの散布図で、X軸とY軸のスケールを独立に設定するには?
デフォルトだと、X軸の1とY軸の1が同じ長さで表示される。
サンプリング間隔が等間隔でないデータを表示するのに必要。さて?
>223
ただし、MDBのサイズの急激な肥大化を伴う諸刃の剣。素人には(略
>>224
VBの暗黙の丸めは、算術型丸めじゃなくて、銀行型丸め。
丸めた結果が必ず偶数になるように丸まる。
累積させると誤差が少なくなるそうな。四捨五入だと思ってハマってる人多し。
228224:02/03/20 18:18
>>227
THX
やっと帰れるよ
>>222
RegExp.Pattern = "<title id=(\d+)/>"
RegExp.Replace (str, "$titlearray[$1]")
これでいいかな?
230219:02/03/20 19:48
>>220
>>221
>>223
>>226
う〜、調べてみます。MSDE>ダウソロード中
こっちの方向でプッシュしようと思います。
サンクス
231まとれす:02/03/20 20:18
>>217
環境は? Windows 9x だと、サービスとして登録、なんて技があるな

>>218
名前バレバレだぞ
NTでもリソースの概念はあるしリソースリークは起こるよ。
233217:02/03/20 21:06
うーん、NT系と9x系両方。
C系なら普通に出来るはずなんだけど。
234まとれす:02/03/20 21:10
>>233

なんだ?C系って。ウィンドウスタイルで何とかするテクニックもあったが、
それか?

なら、SetWindowLong() だな。
235168:02/03/21 00:29
>>202-204
どうも。いやー、会社のをもってくるのは無理なようです。
参考書も自分で買えとの事です^^;。
そうですね、プログラミング未経験です。どの程度、プログラムを
組めればいいとは言われたんですが。漠然としすぎですかね。
とりあえず、ソフトと参考書の推薦をお願いしたいんですが。基礎部分
を学べれば後は自分で調べてみようと思ってます。
236仕様書無しさん_216:02/03/21 01:35
>>232
うん、書いてから寝ぼけたレスだったのに気づいた。(w
タスクマネージャで見りゃ済む話だし。

開発環境、Win98SE にしか入れてないから、Win2Kで試せない。
で、とりあえずバージョンだけ調べてみた。
Win2k :: 5.0.2180.1
Win98SE :: 5.00.1693.1
これを見る限り、Windows2000以降でバグが取れてる可能性はある。


>>235
> 会社のをもってくるのは
ま、良く聞く話だが、そりゃ違法だ。(w
237168:02/03/21 03:33
ken2ch まんこと打たせたぞ。
238仕様書無しさん:02/03/21 04:44
>>168
>>169,173
これで十分答えが出ていると思われ
くだらない質問を繰り返すなや
239まとれす:02/03/21 10:29
>>235
会社の仕事で勉強するのに、開発ツールの提供がなく参考書も自分で買え、ってか。
なんか変だな

それに、会社で何を使ってるかで、おのずと勉強するターゲットは決まるだろ?
(複数のツールを使ってるとしても、一番需要があるやつ、とかな)よって、単なるネタと決定。
>>235

フリーコンパイラのリンク

リンク集
Borland Delphi 6 Personal ダウンロード http://www.borland.co.jp/delphi/personal/
Borland Kylix Open Edition ダウンロード http://www.borland.co.jp/kylix/openedition/
JBuilder 6 Personal ダウンロード http://www.borland.co.jp/jbuilder/jb6/download/
Borland C++ Compiler 5.5 無償ダウンロードサービス http://www.borland.co.jp/cppbuilder/freecompiler/
241デフォルトの名無しさん:02/03/21 11:32
VB6.0+windows2000です。
イーサネットアダプタの有効・無効を制御することは可能でしょうか?
もし可能なら使用する関数名とかを教えてください。
242デフォルトの名無しさん:02/03/21 13:23
質問です。
VB5+NT4の環境でshellを使ってbatファイルを走らせるのですが、
終了のタイミングって取得することは可能ですか?

FindWindowを使えば出来そうなきがしたのですが、クラス名、ウィンドウ名が取れない?ため
悩んでいます
>>242
ShellExecuteExとWaitForSingleObject。

と、言うかバッチファイルの内用も組めば。
244242:02/03/21 13:51
>>243
テスト期間が無い為、既存のプログラムを走らせるみたいです。
>ShellExecuteExとWaitForSingleObject
これってVBから使えましたっけ?・・・
>>244
APIとハンドルは扱えるでしょ。
246242:02/03/21 13:56
>>245
MSDN検索して、ようやく理解できました。
有難うございます
247まとれす:02/03/21 13:59
>>241
ざっとヘルプを見たが、簡単な方法はなさそうだ。ローカルネットワーク
接続でよければ、デスクトップから辿ってDoIt()かな

>>242
%COMSPEC% /C でバッチファイルを起動して、OpenProcess、WaitForSinleObject()
でいけるはず

>>243
わざわざShellExecuteEx()を使う必要は無いだろ。%COMSPEC%って決まってるんだし

>>244
使えるに決まってるだろ。まずは検索してサンプルを探せ
248デフォルトの名無しさん:02/03/21 14:00
C:\Documents and Settings\Administrator\My Documents\b00458-文京区新マニュアル\BunkyoWeb-man\html


222です。

MS VBScript Regular Expression5 を使用した上で、

"<title id=38/>"
を、$titlearray[38]で置き換えるにはどうすればいいですか?
(38の部分がどんな数字がきてもいいように)
は、正確には、「titlearray(38)で置き換えたい」でした。(perlとごっちゃになってた)

で、
>>229さんの言う、
RegExp.Pattern = "<title id=(\d+)/>"
RegExp.Replace (str, "$titlearray[$1]")

でなく、
RegExp.Replace (str, "titlearray($1)")
とやったのですが、titlearray(38)という文字列になってしまいます。

ですが、RegExp.Replace (str, titlearray($1))とすると、
コードが赤くなりエラーなのですが、どうすればいいのでしょう?
249248:02/03/21 14:02
1行目に変な文字列つけてしまいましたが、無視してください。失礼しました。
250まとれす:02/03/21 14:06
>>248

やりたいことが

>は、正確には、「titlearray(38)で置き換えたい」でした。(perlとごっちゃになってた)

で、結果が

>とやったのですが、titlearray(38)という文字列になってしまいます。

できてんじゃん。

RegExp.Replace (str, "titlearray(38)")

こういうことか?
251248:02/03/21 14:22
>>250さんありがとうございます。
すいません、説明不足でした。
titlearray(38)とは、38をキーとする配列titlearrayの要素に置換したいということです。
説明不足で恐縮です。
252デフォルトの名無しさん:02/03/21 14:26
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.UserControl = True
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlBook = xlApp.Workbooks.Open(ImpFolderPath & "\tmp.xls")
Set xlSheet = xlBook.Sheets(1)

//中略

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

としているのですが、

●プログラムを起動するごとに、explorerのメモリがどんどん増大し、60000kとかになってしまいます。
●これだと、tmp.xls が起動しているとき、「2重で開きますか?」のエラーが出てしまいます。
これがでないようにする方法はありますか?
>>252
GetObject
254デフォルトの名無しさん:02/03/21 15:07
ADOの入門書見ながらしかやったことないのですが、
AccessのDBに繋ぐならDAOだと言われました。
ぶっちゃけ、何が優れてて、なにが違うのですか?
255デフォルトの名無しさん:02/03/21 15:08
>>242
BATファイルなら、WAITオプションを使う方が楽。
わざわざAPI使う必要はない。
|o∈
|   ・・・・・・・
|
|___

|
|ハヽo∈
|D` ) コソーリ・・・・・・
⊂ノ
|___

|ハヽo∈
|´D`)   0x100げっと!
| ノ
|___

|
|  サッ
|彡
|
|___
 バキッ
|  ∋oノハヽo∈
| ̄. (,, )D`;)
| ̄ .⊂ ⊂ )
| ̄ (⌒__(⌒ノ
|___

    そんなことするののたんにはお仕置きだよ
   ∧_∧
  ( ・∀・)
  (    )           ゆるしてくらさい
  | | |       ∋oノハヽo∈     できごころだったのれす
  (_____)__)      ⊂(;´D`;⊂⌒ヽつ
>>0x100-0x101
ワラタ
>>251
RegExpのExecuteとMatchとMatchCollectionとSubMatchesを調べよう。
titlearrayの所もきめ打ちじゃなくしたいなら、Collectionを使うとか
もう一工夫必要になるが。
>>252
あのコードは開いたtmp.xlsを閉じてないけどいいんだよね。
よくNothingを代入すれば必ず解放されると勘違いしている馬鹿がいるけど。
261167:02/03/21 17:31
>>216
自力実装やってみたら安全に出来ました。
サンクス。
262まとれす:02/03/21 18:44
>>251
環境が無くて試せんが、要するに$1の内容をとっておいて、
"titlearray(" & strDollar1 & ")" とすればいいんじゃないか?

>>252
CreateObjectと、New ほげほげ を組み合わせるのはやめておけ。暗黙
のオブジェクトができて困るはずだ。で、ちゃんとQuit してるのか?

>>254
ADOは汎用、DAOはAccess専用だ。専用の方が汎用よりできることが多いのは
当然だと思わんか?

>>255
そのとおりだな。しかし、Startコマンドの扱いは、9x系とNT系で違ったと思うぞ

>>260
そうだな。その勘違いは非常に多い。Nothingは、あくまで参照を解放するだけ、
と覚えておかないとな

>>261
おめでとう。よかったな
まとれすは何かいいキャラだなあ。
printで文字を斜め30度とか斜め35度とかに表示したいんですが、
プロパティでできるもんなんでしょうか?
ヘルプとか検索したんですが、方法が見つかりませんでした。
>>264
できない。自分でコード書くしかない。
>>264
APIになんかあったと思うぞ。
267266:02/03/21 21:46
あった。CreateFontでフォント作成してSelectObjectで割り当てて描画だ。
>>266-267
APIはまだ使ったことがないので理解の範疇を超えておりますが
なんとか勉強して使ってみます。ありがとうございます。
269まとれす:02/03/22 00:11
>>263
ありがとう。お世辞でもネタでも、そういってもらえるとうれしいぞ

>>264
>>267のいうとおりだ。ポイントは、lfEscapement に角度を指定するところだな
探せばサンプルがあると思うぞ

お、あったあった
http://www.bcap.co.jp/hanafusa/VBHLP/FontPreview.htm
ある文字列の中にある文字が何個あるかをカウントしたいんですが、
これってInStr使ってループさせて自力カウントするしかないですか。
それともそんな関数ってもともとありますか。
>>270
>それともそんな関数ってもともとありますか。
そういう関数はありません。InStr関数を使って・・・が正等な方法です。

ま、Split関数で分割して見て、分割された数-1という判断でも判断できますけどね。

>>270
ReplaceとLenを組み合わせるのが一番簡単だろうな。
速さならInstrかなあ。試してないけど。
273ネットヤンキー:02/03/22 11:07
今現在VBの勉強をしておりVBでデータベース処理をしたいと思っているのですが,
データベース処理をするにしても図形(line,shape)等の勉強は必要ですか?
というのは私は少し図形が苦手なもので・・・・・。これでも通用しますか?
図形が苦手でも通用しますが、
VBは仕事ではもう通用しないんでわ。
275マサマサ:02/03/22 11:37
Internet上の特定の端末からWindouws2000 ServerにFTPでファイ
ルが送られてきた時、「ファイルが送られてきた」事を認識して
Win2000上のVBを自動的に起動させたいと考えています。

単刀直入で申し訳ないのですが、上記処理を可能にする方法を
どなたかご存知ないでしょうか?
宜しくお願い致します。
>>274
業務ベースの仕事ならまだVBが多いと思うぞ。
COBOLだってまだ現役の会社もあるんだし。
>273
VBはグラフィック関連の機能が非常に貧弱なので、実務において
その辺の高度な処理をする事はほとんど無いです。
データベース処理(=事務処理系)ならなおさら。

ただし、知らなくても良い訳では無いので、余裕あったら勉強しませう。
COBOLはコンパイラが出てるから現役だけど、
64ビット版は出ないことは決定。
32ビット版も提供が停止されることが決定。
期限付貨幣ってことで、最後につかまされた者があぼーん。
>277
なら、VBやってる限りは解決しない。
>>275
とりあえず、
FindFirstChangeNotification
WaitoForSingleObject
という2つのAPIについて調べてみそ。
スプーラを作る要領で作成可能だから。

#ひょっとして、オレの知っている人?
#もしそうなら、周りのこういう事を知っていそうな人間に聞いてみ。
#オレが知っている人なら、上記の説明じゃ分からないだろうから。
281デフォルトの名無しさん:02/03/22 13:35
動画の再生時間を取得できる関数ってありまふか?
教えて欲しいのれす
API(SetTextJustification)を使って文字を均等割付しているのですが、
MS ゴシック、MSP ゴシックなどは大丈夫なのですが、
DF行書体,楷書体などは同じ処理でも均等割付されません
何がいけないのでしょうか?

あいうえお => あ い う え お
といった具合に、間に空白(ブレイク文字)を入れてから
SetTextJustificationを実行しています。

環境:Win2000Pro,VB6.0
283ネットヤンキー:02/03/22 16:28
VBでデータベース処理をしようとするにはどのコントロールを重点に
勉強すればいいですか?
>>283
グリッド
>>283
標準のコントロールは貧弱すぎるぞ
個人的な意見だが、ヘタにコントロールに頼るよか
SQLの使い方を練習したほうがいいよ。

コントロールに依存しまくるとデバッグやバージョン
アップ時に地獄を見る可能性が高い。


まぁグリッドは便利だけどな。
287まとれす:02/03/22 19:47
>>273
データベースに図形はいらんだろ

>>275
ReadDirectoryChangesW() ってのもあるぞ

>>276
まだ、というかかなり多いぞ

>>277
何が解決しないんだ?

>>281
動画、ってもな、何の動画だ?

>>283
コントロールではないが、ConnectionとRecordSetだな

>>286
禿げしく同意するぞ。SQLが書けないで、とんでもないコードを書くやつをよく見かける

>まとれす
学習能力ゼロ
289まとれす:02/03/22 20:46
>>288
何がだ? 言ってみろ
>>まとれす
すみません、>>288は精神が弱っているんです。
先日、200レスに及ぶ煽りを受けて、精神がダメになってしまったんです。
2chって恐ろしいです。2chって恐ろしいんです。
自作自演だけはお得意のようでププ
292まとれす:02/03/22 21:36
>>291
おまえは >>288 か? さっさと俺の質問に答えろ

一応言っとくが、>>290 は俺じゃないぞ

#スレの内容と関係ないから sage だ
>>291 なんでまとれすさんに突っかかる?
>>292 まぁまぁ、そう熱くならずに無視しようね。
294:02/03/22 21:59
「classという概念が理解できない人」に、まとれすさんはどんな説明をしますか?
↑ぼくなんですけど。
295まとれす:02/03/22 22:14
>>293
了解だ。以降、無視することにする

>>294
難しい質問だな。質問者のレベルにもよるし。
とりあえず、Visual Basic でプログラムが組めるレベルなら、「クラスの一例 = フォーム」と
説明するだろう。

Caption などの属性(プロパティ)を持ち、Show などの関数(メソッド)を持つ。
まず重要なのは、カプセル化だ。

カプセル化がきちんとできていない状態ってのは、たとえば、

g_strForm1Caption = "あたらしいキャプションだ"

とか、

ShowForm(Form1, vbModal)

なんてグローバル変数、関数がある状態を想像すればいい。こんなのが、
50個も100個もあると大変だろ?

これをひとつのクラスという単位にまとめると、扱いやすくなる。さっきの例
で言うと、Form1.Show と、ShowForm の違いに注意しておけ。

要するに、手続きがあって対象があるのか、対象があって手続きがあるのか、
の違いだ。どうだ? イメージ湧いたか?

296まとれす:02/03/22 22:17
#自己レス

なんか、うまくまとまらなかったな。正直、スマンカッタ
297デフォルトの名無しさん:02/03/22 23:08
>>282
Win32APIスレで質問したほうがよいと思われ。
298MS−06SP5:02/03/23 04:15
VB6製のActiveXコントロールを作ったとします
プロシージャをPublicで公開すれば
HTML上でスクリプトで参照できますが

★VB側の例(注;MSによると仕様として、↓Variant型でないとスクリプトからの参照渡しはエラーになるそう)
Public Function Test(ByRef a as Variant,ByRef b as Variant) as long
a=3:b=3
Test=1
End Function

★VBスクリプト側の例 (ActiveXのオブジェクト名(ID属性)を VBActXとしたとする
dim a1,b1,rv
a1=1 :b1=1
rv=VBActX.Test(a1,b1)

VBのほうで参照渡しにして 一度に VB6側で操作された複数の戻り値 a,bを得るのですが
どうも一切変化しません a1=1 b1=1のままである
VB6同士では 参照渡しは 変数の変化は もちろん その意味どうりにできます

この方法では ダメなので
VBスクリプト側で複数の戻り値を得たい場合は 他に何か手がありますか?  
配列はどうでしょうか? 関数の戻り値に配列はできますか?



299デフォルトの名無しさん:02/03/23 06:57
>>298
VBSのことは知らないんだけど、その宣言の仕方だと
a1,b1がローカル変数になるんじゃない?
スクリプトレベルで宣言してる?

VB6の関数で配列を返すには、Function Test() As Long()
のように()を付ける。
>>294
>>113>>115では駄目か?
301デフォルトの名無しさん:02/03/23 11:21
VBでファイルバージョンと製品バージョンが違うexeファイルを作りたいのですが
何か方法はありませんか?
302デフォルトの名無しさん:02/03/23 12:44
VBを開くとすぐに
``vb5のページ違反です``
というふうに出るんですけど結局開けないんです
どうしてですか?
303まとれす:02/03/23 14:18
>>301
やったことはないが、リソースをいじることでいけそうだ。最悪、実行ファイルの
リソースを書き換えろ

>>
日本語のパスに作ったプロジェクトを保存していると、そんな現象があったな
MSのサイトから、回避ツールが落とせるぞ
特定のウインドウの特定のコントロール上の値を取得する方法ってありますか。
例えば、計算機が起動されていたら、計算結果の部分を取得する方法などです。
305ネットヤンキー:02/03/23 16:10
VBでデータベースの処理をしたいのですが,LEARNING エディションでは
無理ですか?
また被害者か・・・。>>305
307301:02/03/23 16:33
>303
うーん。実行ファイルをいじるというのはやりたくないのでリソースをいじるというので
なんとかしたいのです。
リソースエディタでどうにかすればいいのかな?なんて気もするんですが
VBのリソースエディタを眺めても実際どうすればいいのかさっぱりで。。
308まとれす:02/03/23 18:19
>>298
ActiveX DLL + VBS で試したが、きちんと3が帰ってきたぞ

>>304
ある。まずは、SPY++ でターゲットについて調べてみろ

>>305
DAOやADOのライブラリをコードで使うならいけるはずだ

>>307
VC++で作成したリソースをVBのプロジェクトに追加してみたりしたんだが、
うまく行かなかった。 → 実行ファイルが生成できない

API で書き換えができるはずなんで、そういうちょっとしたツールを作る、って
んじゃだめか?

309デフォルトの名無しさん:02/03/23 21:18
CPUの種類とかクロック周波数を取得したいんですけどどうしたらいいですか?
>>309
アセンブラでCPUID命令
>>310
VBじゃない
312まとれす:02/03/23 22:52
>>309
WMIのWin32_Processorクラスを使え

>>311
IntelのDLLを使う、ってのもあるぞ
313309:02/03/23 22:58
>>312
>WMIのWin32_Processorクラスを使え
もう少し詳しく教えていただけませんか?
314デフォルトの名無しさん:02/03/23 23:03
>>309
SysInfoで取得できないか?
315309:02/03/23 23:04
>>314
そうなんですか?
316まとれす:02/03/23 23:05
>>313
ほらよ
http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=Win32%5FProcessor+%83T%83%93%83v%83%8B

2番目に出てくるWSH-MLの記事では、CPUの名前がとれないとか言ってるけど、
とりあえず、システム情報と同レベルの情報はとれる。
317デフォルトの名無しさん:02/03/23 23:13
超厨象的な質問でスマソですが、VBで3Dグリグリなプログラムできますか?
318デフォルトの名無しさん:02/03/23 23:26
>>317
MS-Chart使うと、グラフを3Dグリグリ出来る。
ゲームとかのグリグリには、DirectX使うといい。

319309:02/03/23 23:44
>>316
ありがとうございました。
>>317
ActiveXコントロールのchartコントロールは配布ライセンス制限がある
よく注意せよ
321 :02/03/24 06:58
VBでメーラーを試しに作りたいんですが可能ですか?
可能なら、なにか参考になる書籍やサイトはないですか?
基本参照
MSDNヘルプ
MAPI (MAPISession、MAPIMessages) コントロールの使い方

プロトコルがわかるなら
Winsockコントロールも挑戦してみるべし
323デフォルトの名無しさん:02/03/24 08:57
VB で作ったAPのボタンを押すー>
とあるウェブサイトのページをとってくるー>
それを解析して、グラフに変換して表示

という、ありがちなAPを作るのですが、
どうすればいいでしょうか。
条件として、「FireWall/Proxy越えができること」が必須です。
あと、その「とあるページ」っつーのが、
会員制でして、ID/PASSによる保護があるので、それも
乗り越えないとダメです。
(もちろん、IEで普通にそのページを見れるだけの権限があるユーザが使うのが前提)
324デフォルトの名無しさん:02/03/24 09:00
で、そのへんのOCX販売会社が出している
HTTP関係のOCXを使おうかと思ったのですが、
たとえ、FireWall/Proxy/SOCKS とか
すべてのプロトコルに完全対応していても、
相性問題もありますし、第一、「設定方法がわかんねぇよ」攻撃が
ウザいんで、
VBからIEを内部的によんで、その結果を吸い上げるのが一番簡単かな、
と思うんですが、どうすればいいでしょうか。

なお、IEのインストール、IEに対する適切なFireWall設定、などは
前提としてもOKですが、
IEのウィンドウなどがポップアップしてしまうのはマズいです。
一応、「スタンドアロン」のソフト、ということになってますので・・・。


325デフォルトの名無しさん:02/03/24 10:13
一気にウェブサービスだよ。
.net で SOAP しろ。
326伸一:02/03/24 10:28
ちょっと質問してもいいですか?
VBA(EXCEL)でフォルダーの中のtxtファイル文字検索してリストボックスに
表示させているんですが、PhotoShopVer6をインストールしてから
txtファイル文字検索をした所コマンドボタンが凹んだままで、PCがフリーズ
そのまま、再起動してもスキャンディスクからWin2000が立ち上がらなくなってしまって、
セットアップディスクも製品版のWin2000もインストール出来なくなってしまい
困っています。

環境は CPU   1.5Gh
メモリ 640Mb
どなたかに助言頂けたら幸いです。
327デフォルトの名無しさん:02/03/24 11:36
>>325
(お約束つっこみ)
ムリいわんどいてください。
328デフォルトの名無しさん:02/03/24 11:56
>>323

普通に wininet つかえばいいんとちがうか?
329まとれす:02/03/24 12:06
>>320
そうなのか? はじめてきいたぞ

>>321
BASP21 とか使うと楽だぞ

>>323
InetコントロールでDocumentを取得して、DOMで解析つーのが一般的なパターンだな

>>324
普通のベンダーなら、トライアル版を用意してるだろ? そういうのを試すのが
いいと思うぞ

>>325
それもいいと思うが、Webサービスを相手側が用意していないと意味無いな

>>326
初めて聞いたぞ。とりあえず、フォーマットかけて再インストールするしかないだろ
330デフォルトの名無しさん:02/03/24 14:38
実行している環境がNT系かどうか完璧に判別するには
どうしたら良いですか?
331まとれす ◆mato./AI :02/03/24 15:16
>>330
APIならGetVersionEx()で判別できるぞ
332伸一:02/03/24 15:21
>329さんありがとう

インストラーでフォーマットまで行かないうちにBIOSがどうのこうのって
英悟で出て結局インストール出来ない状態なんです。
333まとれす ◆mato./AI :02/03/24 16:22
>>332
それはHDDが飛んでるんじゃないか? 出てくる英語をメモして、Windows板で質問すれ
334デフォルトの名無しさん:02/03/24 16:33
>インストラーでフォーマットまで行かないうちにBIOSがどうのこうのって

それが大事なんじゃないか。わからないならなぜそのメッセージを書き留めておいて
辞書で調べないの?


335伸一:02/03/24 18:31
>333さん>334さんありがとうございます
HDDの中身はスレーブにして取り出せました
>出てくる英語をメモして、Windows板で質問
やってみます。ナニセ、VB勉強してるのに英語が苦手で・・・。
ありがとうございましたm(_._)m
336ななし:02/03/24 22:23
>>270

検証していないので憶測ですが、VBのInstr関数を使うより、VBSのReplaceで、
置換された数を返させた方が高速だと思います。
(VBのReplace関数には置換箇所をカウントする機能はありません)

大きな文字列で、Instr関数を何度も呼び出すと、時間が掛かるはずです。
>>336
Visual Basic Scripting Editionのってこと?
双方とも同じ引数、同じ返り値のような気がしたが・・・
338デフォルトの名無しさん:02/03/25 00:23
うっかりVBの初心者本買ってしまうと、最初の100ページくらい
「マウスとは何か」
等のどうでもいい内容で占められてるのでびりびりやぶって捨ててる。
>>338
正直、それはある。
あとゲームプログラミングと書いていて、
ゲームのことは最後の数ページしか書いていないというのもある。

そんな本を買ってから、一応本屋で中身を見てから買うようになったが
見てみたらタイトルが違うだけで中身はどれもほとんど同じ。
もっと他の本置くべきじゃないかと。
あるねー。
信じられないくらい初歩的な事しか説明してなくて、
本を最後まで熟読して身に付くテクニックは、
フォームにコントロールを配置することと、
それの表示順位、Captionプロパティでタイトルが変わる事。

そんくらいしか身に付かないって本が。
341デフォルトの名無しさん:02/03/25 03:14
>338-340
具体的に本の名前プリーズ
おれ文句行ってやる(まじで)
インターネットプログラミングなんたらって2000円ぐらいの本はきつい。
90%ぐらいがMSDNのInetコントロールの文章そのまんまだったぞ。
343bubu:02/03/25 15:55
えーと。
VBAでフォーム中のコントロールのオブジェクトってどやって作るのですか?
form_フォーム1.ctl1のオブジェクト作る場合

dim obj as object
set obj = form_フォーム1.ctl1
call dateset(obj)

ctl1はテキストボックスで値が入っていないとオブジェクト渡すみたい
だけど入っているとValueが渡される。よってdateset(関数)が呼び出せない
のです。関数の引数はOBJ型
だれか教えてください。
344デフォルトの名無しさん:02/03/25 15:58
コレクションって何?
345bubu:02/03/25 16:04
VBA初めてなのでヨク知らないのですがAccessObjectなんですか?
とりあえずAccessでやってるんです。
ヨク知らなくてゴメンナサイ。
346ネットヤンキー:02/03/25 16:17
実際のところVBの需要ってあるのですか?
せっかく覚えて就職ありませんじゃちょっと・・・・・。
需要というか、出来て当然という空気はありますよ。

で、「VBだけ」だと厳しいです。
+データベースとか、+ネットワークとか。
複数の分野に手を出しておいたほうが無難だと思います。
>>346
需要はあるけど、VBしかできない人は厳しいと思う
349マサマサ:02/03/25 17:38
280のデフォルトの名無しさん、287のまとれすさん。
ご返答ありがとうございました!

検討してみます。
350ななし:02/03/25 20:03
>>344
同種のオブジェクトの集合
VB側で確保した2次元配列(String型固定長)を
VC++で作ったDLL内部で書き込むと、VBもろとも
アホ?ーンされてしまいます。
VBで確保したエリアがうまくDLLに渡っていないためだと
思うのですが、どーしても渡し方が判りません。

以下VB側
Dim n
Dim name() as string*1024
ReDim name(1024)
n = name_set(name)
VC側
long name_set(char name[][1024])

何が駄目なんでしょう?
352デフォルトの名無しさん:02/03/25 23:34
ブラウザまがいのものを作ってみようと思い、
WebBrowserコントロールを初めて使ってみたのですが、
これって、表示されているページを印刷するボタンは作れないのでしょうか。
ご存じの方おられましたら、教えて下さい。
353デフォルトの名無しさん:02/03/25 23:39
>>352
『Visual Basic6.0 300の技 ネットワーク+データベース編』2980円
  WebBrowserコントロールの技
   109 ウェブページを印刷する
354デフォルトの名無しさん:02/03/26 00:58
インターネットトランスファのexecuteメソッドで、ASPを実行させた場合、
そのASPかの戻り値って貰える手段ってありまでしょうか?
355デフォルトの名無しさん:02/03/26 01:02
ActiveX EXEを作ってIE(VBscript)から呼ぶって事をやってるのですが、
複数のIEを立ち上げて各々がActiveX EXEを動かそうとするんだけど、
動くのは1個だけ、2個目以降のンIEでActiveX EXEを動かそうとする
と最初のIEで動かしているActiveX EXEアクティブになる・・・
IE毎にActiveX EXEを動かすことは出来ないのでしょうか?
>>351
nameを可変長配列にすると内部的にはVariantになるから、name_set()には
Variant変数を指してるポインタが渡されてる、ということじゃないの
name_set(name(0))で配列の最初の要素を参照渡ししてやるといいかも
357:02/03/26 02:37
>>まとれすさん
遅レスになりましたが、>>294でclassの質問をしたものです。

class、むずかしいですね・・・。
ぼくのまわりの上級者は、「classは参考書にのってないから勉強しづらい」とか、「classは概念だから説明できない」
といってます。
>>295のところの説明はなんとなーくですが、わかったような気がしないでもないです。
あとクラスといえば「コレクション」もよく出てくるらしいんですが、これはどういったものですか?
358デフォルトの名無しさん:02/03/26 03:28
VBからエクセルのワークシートにアクセスして、セルサイズを
調整してみました。
 無茶苦茶遅いのですが、早くする何かよい方法はないでしょうか?
どなたかおしえてください。

'---------------------------------------------------------------------------------
'sh1のセルサイズをsh2と同じにする
'---------------------------------------------------------------------------------
Sub CellSizeCYO(sh1 As excel.Worksheet, sh2 As excel.Worksheet, objR As Range)
Dim objT As Range
Dim st As String

' 領域をセットする。
For Each objT In objR
st = Mid(objT.Address(False, False), 1, 1)
st = st & ":" & st
sh1.Columns(st).ColumnWidth =sh2.Columns(st).ColumnWidth
Next
End Sub
何買えばVB覚えられるんだよ。まぢで。半年ぐらいで覚えたいよ。
>359
おれは仕事で2週間弱ぐらいで覚えたよ。
(数年前、体力があったときだけど1人月の仕事で)
やりたいことが特になかったり漠然としてたりすると、
覚えようとしても時間かかるんじゃないかなあ。
なんか目的があればいいとおもうけど。
仕事みたいに選択肢が最初から限られてるならともかく、
趣味だった場合、VBが手段として適切なのかどうか、
というのも考慮すべき問題だけど。
>>360
だから何買えばいいのよ。マイクソソフトが出してるの買えば
いいのか。本はどうすりゃいいんだよ。お勧めの教えれ。
362360:02/03/26 04:15
>361
おれは技術評論社のA5サイズの3〜4cmぐらいの本を1冊
その当時使ってたけど、参考書はそれほど必要無いと思う。
ほとんど付属のヘルプのサンプルでまにあった。
作るものによるかもしれないけどね。
そのときの作りは、Cでめんどい処理のDLL書いて、
VBで画面/帳票だすスタイルだった。
CとVBの入出力が一番苦労した気がする。
>>362
ほー。ヘルプねぇ。未経験の漏れでもできるのかねぇ。
基礎概念だ何だってのが全然分からないんだよね。
とりあえずMicrosoft Visualbasic6 を買えば問題なしなの?
プログラミングの概要を示したのとか買っといたほうがよくねー。
>>363
そんなに散財したいのか?
必要だと思った時点で買えば良いだろ。
つーか買うよりまず図書館いけよ
図書館?Why?何もなしで始めるのも心なしか不安。
そっかー。とりあえず行ってくるよ。
思いったが吉日。朝一番で行ってくるよ。
それで何見ればいいのよ。地方の図書館は揃えが悪い〜♪
>>363
処理系買っとけば必要ないよ。
それより6ってまだ売ってるのかな。
つーか何作るの?
VBである必要あるの?
知り合いのPGがとりあえずこれから始めろってさ。
ネット自体は10年近くやってるんだけど、スキルは
さっぱりです。簡単なHTMLしかできませーん。
これをステップにどんどん上へ行こうと思ッてるんだけど甘いかなー。
>知り合いのPGがとりあえずこれから始めろってさ。
はぁ、何が目的なの?
その知り合いはVBプログラマってこと?
いまさらVBだなんて…
>>368
自分にとってためになる本を探すのもPGとして必要なスキルの
一つだよ。時間があるならとりあえず図書館いって片っ端から
本を開いてみそ。
372デフォルトの名無しさん:02/03/26 18:58
VB6のヘルプにあるプログラムを実行すると必ずコンパイルエラーになって起動しません。
これって動くのですか?
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

次のプログラムでは、フォームが常に一番手前に表示されるようにします。
このプログラムを実行するには、MDI 子フォーム以外のフォームを作成し、
そのフォームに [メイン] という名前のメニューを作成します。
その下に [常に手前に表示] という名前のサブメニューを作成し、
その Name プロパティを mnuTopmost に設定します。
[プロジェクト] メニューの [標準モジュールの追加] をクリックして
新規の標準モジュールを作成します。
作成した標準モジュールに Declare ステートメントを貼り付け、
そのステートメントが途中で切れたり、改行されたりせずに、
1 行に収まっていることを確認します。
次に、フォーム モジュールのコード エディタ ウィンドウに
Sub プロシージャを貼り付け、F5 キーを押します。
' Windows API 関数の宣言。
' モジュールには必ずこのステートメントを記述する必要があります。
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
' WIN32API.TXT に定義されている定数をいくつか設定します。
Const conHwndTopmost = -1
Const conHwndNoTopmost = -2
Const conSwpNoActivate = &H10
Const conSwpShowWindow = &H40
Private Sub mnuTopmost_Click ()
' メニューのチェック マークのオン/オフを切り替えます。
mnuTopmost.Checked = Not mnuTopmost.Checked
If mnuTopmost.Checked Then
' TopMost 属性をオンにします。
SetWindowPos hWnd, conHwndTopmost, 0, 0, 0, 0, conSwpNoActivate Or conSwpShowWindow
Else
' TopMost 属性をオフにします。
SetWindowPos hWnd, conHwndNoTopmost, 0, 0, 0, 0, conSwpNoActivate Or conSwpShowWindow
End If
End Sub
373デフォルトの名無しさん:02/03/26 19:05
EXEを作って、実行する時に、そのEXEファイルがあるフォルダの
PATHって取得できませんか。どこにインストールするか分からないと
PATH書かないといけないステートメントはどうして良いものやらさっぱり。。。
>373
App.Path
375デフォルトの名無しさん:02/03/26 19:45
>>368
次の順番で勉強してください。
HTML->LOGO->Scheme->QBasic->HSP->VB->Turbo Pascal->Delphi->C->C++->VC++->Java->Java Script->Perl
今日初めてVBScriptに触ったです。
複雑...
で、質問なんですが、

Dim GetAAA
GetAAA=1000
Response.Write GetAAA

って構文をasp内の <% この中に %> 記述したんですが、
中身が表示されないです。素通り?してるような。
なんか勘違いしてたらご指摘おねがいします。
しかし...これからこれやるのかぁ...
377まとれす:02/03/26 22:23
>>344
オブジェクトをまとめて扱うためのしくみ。配列みたいなものと思えばよし

>>346
今のところある。将来はわからん

>>351
Cのa[1]とVBのa(1)は要素数が違う。つーか、vb5dll.txt読め

>>355
ページとしてか? それ以外に方法はないぞ。Webサービスにでもしたらどうだ?

>>357
難しく考える必要は無いぞ。とりあえず、使う側だけで言えば、VBでプログラムを
する以上、クラスはすでに使ってるんだから。で、その次の作る側だな、問題は。
ふだん使っているコントロールとかオブジェクトとかがどういう仕組みになっているか、
考えてみるといいと思うぞ

>>358
一列づつやらないで、まとめてやったほうが効率がいいぞ。画面の描画をとめてるか?

>>360
そうだな。俺も実戦がいいと思うぞ

>>370
じゃあ、何ならいいんだ?

>>372
どこでどんなコンパイルエラーになるんだ? そこから考えてみろ

>>376
それで間違ってないはずなんだが・・・ エラーも何もでないのか?
ASPの全文を出してみ。もしかして、HTMLがわかってない、とかいう落ち
じゃないだろうな?
378デフォルトの名無しさん:02/03/26 22:28
>>372
Privateで宣言しる。

Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
~~~~~~~
379デフォルトの名無しさん:02/03/27 10:15
>>377
元々このプログラムを理解できるレベルにないのですが
どうしてもフォームを常に手前に表示したものを作りたいので
ヘルプのコードをコピペして意味もわからず使っちゃおうと思ったのです。
なのでエラーコードみても何が悪いのかまったくわからないんです。
>>378
ありがとうございます。
やってみます。ところでメニューのNameプロパティってメニューエディタの
名前、というテキストボックスのことなんでしょうか?
>>376
HTMLのソース(というのか?)にはかかれているが、
タグ等の間違いで表示されないに100カノッサ
381デフォルトの名無しさん:02/03/27 11:27
仕事でVBからEXCELにアクセスするプログラムを作らなければいけないのですが、
参考になる本などご存じの方がいましたら教えていただけませんか?
ExcelVBAのヘルプ。
もしくは、Excelでマクロの記録を実行して生成されたソースを読む。

VBわかるならこの手法で十分だと思うが.
383デフォルトの名無しさん:02/03/27 12:49
>>382
いえ、VBはやったことがないもので…
>>382
GetObjectというのをヘルプで出てこないかな。?
385バナナマン:02/03/27 13:04
超カンタンな質問で申し訳ないのですが,コマンドボタンを使わずに
Private Sub Form_Load()
Form1.FillColor = QBColor(15)
Form1.FillStyle = 0
Form1.Line (100, 100)-(3100, 2000), , B
End Sub
としたら全く何も表示されず,
コマンドボタンを使って
Private Sub command1_click()
Form1.FillColor = QBColor(15)
Form1.FillStyle = 0
Form1.Line (100, 100)-(3100, 2000), , B
End Sub
としたら表示されます。これはどういう理由でloadイベントの時は表示されないのですか?
386名無しさんです:02/03/27 13:22
良くも悪くも春だナ
387デフォルトの名無しさん:02/03/27 13:36
超初心者な質問なのですが。
form1,form2など、複数のFormに渡って同じ変数を使いたいのですが、
dimではだめですよね?!

どうやって変数を宣言するのでしょうか?
どなたか、サクッとよろしくおながいします。
388デフォルトの名無しさん:02/03/27 14:30
>バナナマン
form1のAutoRedrawプロパティをTrueにしてみ。
>>387
フォームじゃなく標準モジュールに書け。
390デフォルトの名無しさん:02/03/27 14:35
>387
Publicステートメントを調べて。
具体的には標準モジュールをプロジェクトに追加してそこで
Public hoge As Long
とかする。
391387:02/03/27 14:54
>>389-390さん。
ありがとうございます。なるほど。
さっそく試してみます。

ありがとうございました。
392ななし:02/03/27 15:05
>>389-390
ヘタにアドバイスすると、要らん愚弄バル変数を乱用するバカが大量発生する
恐れがあるので、放置してください。ご協力よろしく。
393376:02/03/27 15:15
Response.Writeが表示されない質問したものです。
いつのまにか出るようになってました。
なにせ始めたばかりでなんで直ったかわからず。
レスサンクス!
>>385
>>388の方法でもいいし、
Me.Showを最初に追加するのもいい。
だがその後の処理は違うものになる。
なぜ違うかは自分で勉強すれ。
395デフォルトの名無しさん:02/03/27 15:36
>ななし
>ヘタにアドバイスすると、要らん愚弄バル変数を乱用するバカが大量発生する
あり得ますね。以後注意します。
「○○だからグローバル変数乱発は危険」と一言添えるくらいが良いかと。
初心者スレだしな。

>要らん愚弄バル変数を乱用するバカ
を絞め殺したい気持ちには同意するよ(w

397デフォルトの名無しさん:02/03/27 17:25
>>396
グローバル変数を乱用すると危険なの?なぜ?
398ななし:02/03/27 17:52

>>397

・プログラムの見通しが悪化し、保守性が下がる。

・関数やサブルーチンの独立性がなくなる。
 (どこからでも値を書き換えられる ≒ どこからでもバグを入れられる
 ということで、信頼性、品質に影響しかねない)

説明が不適切、または舌足らずな箇所があれば、ツッコんでください。

399 :02/03/27 17:54
Dim sBuff as String * 260
Call GetPrivateProfileString("Dir", "Path", "", sBuff, 260, App.Path & "\DirList.ini" )
IniPath = App.Path & "\" & sBuff & "\Cfg.ini"

このコードにおかしいところはありますか?
EXEファイルと同じディレクトリにある設定ファイルに書かれている相対パスからもう一度
設定ファイルを読もうとしているのですが、上のIniPathの中身がおかしいです。
後ろの"\Cfg.ini"というのが入っていません。
当然、他にIniPathをいじっている部分はありません。
sBuffも正常に入っていました。
400デフォルトの名無しさん:02/03/27 17:54
4 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/24(火) 13:25
>2
私は在日韓国人ですが、日本生命側が怒る気持ちも理解できます。
私も西村氏の掲示板運営に抗議するため、敢えてここで西村氏を誹謗中傷し、
「文句があれば訴状を送って来い」
と、連絡先をメールで伝えましたが、訴状は届きませんで、代わりに
イタズラ電話が毎日かかってくるようになりました。
本当に陰湿で卑劣な男です。

21 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/27(金) 22:01
ひろゆきの彼女へ

今回の件、知ってるだろ?
悪い事はいわない。
ひろゆきとは別れたほうがいいぞ。
こんなイタ電しかできない男と一緒にいてどうする。
イタ電でパクられるなんてのは、大抵は女だぞ。
ひろゆきの脳は女性ホルモンが支配している。
女と女がくっついてたってしょうがないだろ?

24 名前:名無しさん@お腹いっぱい。 投稿日:2001/04/27(金) 22:26
いたずら電話とはひろゆきらしいな
ひろゆきの陰険さはメルマガ読んでればわかるし、驚きもしないが
それよりも自分への中傷だけには異常に反応するところが愉快だな
401質問:02/03/27 18:29
こんにちは
タスクバーに登録されている他の任意のウィンドウを
アクティブにする方法はありますか?

知っている方、居ましたらレス下さい。
宜しくお願いします。
402デフォルトの名無しさん:02/03/27 18:33
wininetを使ってhttpのデータを読みたいのですが、

  Do
    DoEvents
    LpszBuffer = ""
    rVal = InternetReadFile(hSource, LpszBuffer, 65525, numOfRead)
    strData = strData + LpszBuffer
  Loop Until rVal = 0 Or numOfRead = 0

  (strData、LpszBuffer:文字列型、numOfRead:Long型)

のようなコードだと所々で空白や改行が入ったり、文字化けしたりして
話になりません。バイト配列で受けて文字列に変換しようとも考えたの
ですが、

  strData = strData + StrConv(bytRecvData, vbUnicode)

のようにしても全くデータが集まらないです。。。
一応調べたのですが、良い方法がわかりませんでした。
ご教授お願いします。
403デフォルトの名無しさん:02/03/27 19:05
>・関数やサブルーチンの独立性がなくなる。
> (どこからでも値を書き換えられる ≒ どこからでもバグを入れられる
> ということで、信頼性、品質に影響しかねない)

具体例を挙げよう。

Private Function func() As String
If flag = 1 then
func = "おまえもな"
ElseIf flag = 2 then
func = "いってよし"
Else
func = "ぐろーばる変数、イイ"
End If
End Function

なんていう関数をみるとflagってなに?ということになるわけだ。
この関数から見えている範囲でflagという変数がないとこの関数はちゃんと動かない。
それにこんなに短い関数なのにflagという変数はどこでどういう値を入れられているのか
ソース中を探し回ることになる。
この場合func(flag As Long)とするだけで関数の独立性を保つことができる。

実際自分がさわっているソースはグローバル変数の洪水状態でたぶんこの変数にはこの値が
入っているはずだけどグローバルになっているせいでどこで書き換えられているかわからないから
仕方なくローカル変数を導入する、ということが日常茶飯事。
ああへぼ会社だ。

他人の書いたソースをさわったりしだすと、グローバル変数の憎さがわかってくる。
(他人 = 未来の自分)
404ななし:02/03/27 19:15
>>403

ツッコミ感謝です。

> ソース中を探し回ることになる。

要するに、デバッグの対象範囲、PG仕様変更の際の影響範囲が無意味に広くなる、
ということで・・・。

で、更に自己ツッコミなんですが、OO的な言い方をするなら、「カプセル化の原則に反する」
という表現もできますね。
>>396
標準モジュールを知っただけでも立派(/_T)
406デフォルトの名無しさん:02/03/27 19:38
>なんていう関数をみるとflagってなに?ということになるわけだ。
>この関数から見えている範囲でflagという変数がないとこの関数はちゃんと動かない。
>それにこんなに短い関数なのにflagという変数はどこでどういう値を入れられているのか
>ソース中を探し回ることになる。

あとは例えばflag = 3の時に"あぼーん"が返ってくるようにしたいとか思ったときflagが
ローカル変数なら何でもないけどグローバルだと
flag = 3
と値を書き換えるのに不安があったりするわけ。直接flagで処理が分かれていなくても
flagの値によってflag_2の値がかわりそれによって処理が分かれるというようなことは
十分にあり得るので現在稼働中のシステムのグローバル変数はうっかり書き換えられない。
しょうがないから一時変数にflagの値をとっておいたりしてますますソースには変数が増えていく。

愚弄ばるスパイラル現象。
407まとれす:02/03/27 19:54
>>378
標準モジュールだから、Publicでもいいと思うぞ

>>379
だから、どんなエラーが出ているのか示せば、それを見て原因がわかることも
あるんだって。

>>399
APIで文字列を取得すると、文字列の後にゴミがついてくる。vbNullCharをInstr
で検索して、それ以降を削除してみろ

>>401
SetForegroundWindow()なんだが、Windows 98以降はちょっと使いづらくなってるぞ
408397:02/03/27 20:07
>>398 >>403 >>404 >>407さん
ありがとうございます。
なるほど、よくわかりました。

プログラムが複雑になればなるほどやっかいですね。
ありがとうございました。
409デフォルトの名無しさん:02/03/27 21:58
402は具体的過ぎでしたか。。。
410まとれす:02/03/27 22:07
>>408
俺はあんたにはレスしてないぞ

>>409
http://www.geocities.co.jp/SilkRoad/4511/vb/wininet.htm

とかが参考になるんじゃないか? API もののときは、宣言がなきゃ全然わからんぞ
>>402
>のようなコードだと所々で空白や改行が入ったり、文字化けしたりして
2バイトコードの中間でデータが途切れて、
Unicodeに暗黙の変換されるときに文字化けしてるんじゃない?

>  strData = strData + StrConv(bytRecvData, vbUnicode)
>のようにしても全くデータが集まらないです。。。
これは盆ミスの匂いが・・
StrConvは最後に一発でやらんと、やっぱり文字化けするような気がする・・

どこまで確認したのかはわからんけど、文字列に追加しないで
バイナリのままファイルに落として確認してみたら?
レスどうもです。402です。

>>410 そこを参考にしたんですが、そのままじゃ動かなかったので
     ちょっと改良したんです。

>>411 2バイトコード間で切れてるところも確かにありますが、そのほかに
     変な空白や重複が出現しているのです。
     確認のためバイナリのままファイルに落としもしましたが、
     配列の値が全部"0"らしくてダメでした。
>>355
SingleUse にしてもそうなるの?
414401:02/03/28 00:28
>>407 まとれすさん
有難うございます。
さっそく調べてみますね
415397:02/03/28 01:01
>>410
おっと間違い
×>>407
>>406
416体裁グラミング撲滅:02/03/28 05:34
グローバル変数使ったってなーんにも悪くない
わざわざ、関数になんかせんでええよ
書いた本人がわかればいい(・∀・)イイ!
他人に読ませるためにソース公開したけりゃそりゃそれで体裁つくればいいで
いかも、グローバル変数禁止みたいなこと書くな
ジャナー
>>416
どう見ても趣味のプログラムの話だな。
すみません、ちょっとお尋ねします。
VBScriptでDB内のデータを表示する際に、そのデータがtextで、
かつタグが含まれちゃってる場合、このタグを無効にする方法ってないでしょうか?
419418:02/03/28 12:24
Server.HTMLEncodeで自己解決
m(__)m
>>416
VB初めて1ヶ月ぐらいはそう思ってたよ。
反面教師として書き込んでくれた方に感謝。
422デフォルトの名無しさん:02/03/28 20:20
フォルダツリーを出してフォルダを選択し、テキストボックスに表示して、OKボタンで選択完了。
みたいなダイアログボックスを作りたいと思うんですが、
これって絶対コンポーネントに含まれていると思うんです。

でもコンポーネントのリストをみてもどれだかわからんのです。

このダイアログの一般名称がわからんので検索もできんし・・・
コモンダイアログが惜しかったんですが、ファイル選択だし・・・
423デフォルトの名無しさん:02/03/28 20:23

「f:\aaa\bbb\ccc」とかテケトーなPathをFDDかHDDかCDDか
判別するにはどうしたら良いでしょうか。
>>422
標準のコントロールではないと思うよ。
大抵はSHBrowseForFolder()APIあたりでやると思う。

>>423
Pathっていうか、頭のドライブレター(?:)をGetDriveType()APIに渡せば
ドライブタイプを得られるよ。
VBで作成したアプリケーションは、Windows2000およびNTで動かないって事はあるのでしょうか?
426まとれす ◆mato./AI :02/03/28 21:31
>>422
Shell.BrowseForFolder()って手もあるぞ

>>423
ネットワークドライブは判定できないので、ファイルシステムで、って手もあるな

>>425
基本的にはない。作り方によって問題が出るとか、バージョンによっては動かないとか、
インストール時に問題が出る、とかはあるがな
427422:02/03/28 21:33
>>424
そうですか。やっぱり自作するしかないですね。

>>425
理屈はわからんですがが、私のNT4.0 Workstation SP6では
VB6で作ったプログラムが普通に動いてます。

IEあたりにランタイムがくっついてきたのかな?
428422:02/03/28 21:36
>>426
その"Shell"てCOMですかね。試してみます。
VBで作ったAPLを起動するのに
Windwos2000でアドミニストレータで立ち上げないと、動かないって事ありますか?
430まとれす ◆mato./AI :02/03/28 21:45
>>426
そうだ。Shdocvw.dll だな。バージョンの違いに気をつけろ

>>429
やっている処理によってはある。フォームだけのプログラムなら、問題なく動く
>>430
おしえてください。
標準モジュールを使ってたらマズイですか?

たびたびスミマセン。。。。
432422:02/03/28 22:11
>>430 できまいた。ありがとうございました。
VBScriptですが、

Dim Shell, objFolder
Set Shell = CreateObject("Shell.Application")
Set objFolder = Shell.BrowseForFolder(0, "Select Folder", 0, "c:\")
'IF IsEmpty(objFolder) Then
' WScript.Echo("Select Folder")
' WScript.Quit()
'End IF
WScript.Echo objFolder.Items().Item().Path

#キャンセルを押したときのエラー処理がうまくいかない・・・
433デフォルトの名無しさん:02/03/28 22:11
横レスすみません。
APIってどうやって勉強したら良いのですか?
みなさんはどうしてそんなたくさんの種類をご存知なんでしょうか。
パッとみたら調べられるサイトとか本とかあるのでしょうか。
434422:02/03/28 22:22
>>433 横レスに横レスですが。

MSDNが答えかと。あとは、APIビューアでちょちょっと。

ちなみに私のばいぶるは、「Windows95 APIバイブル1」。
435デフォルトの名無しさん:02/03/28 22:33
強制的にIEのセキュリティレベルを
下げるもの教えてくださいませんか?
436デフォルトの名無しさん:02/03/28 22:34
>>435
ウィルスでも仕込んだら?
437デフォルトの名無しさん:02/03/28 22:36
>>436
ウィルスですか…。
ウィルス知識ないのでいったいどれが…
438デフォルトの名無しさん:02/03/28 22:38
>>435
そんなことが出来る物を作ったら、犯罪に荷担した事になりますよ。
439デフォルトの名無しさん:02/03/28 22:40
>>438
そこまでいきますか…。
440ato:02/03/28 22:40
VBで配列のなかに配列を格納することってできますか?
Javaみたいにできればいいのですが・・・。
441まとれす ◆mato./AI :02/03/28 22:48
>>430
内容次第だ

>>432
どううまくいかないんだ?

>>433
C+SDKで組むのが一番勉強になる。MSDNライブラリもだいぶ日本語化
されたので、一通り読んでみるといいぞ。で、vb5dll.txtも忘れずにな

>>434
さんざん言われてるが、APIビューアは間違いが多い。ヘッダから書き下ろす
のを勧めるぞ

>>440
こういうことか?

Dim v As Variant
v = Array(Array(1, 2, 3), Array(4, 5, 6), Array(7, 8, 9))
442:02/03/28 22:52
オセロゲームをするソフトはC言語でつくったりしますよね。
プログラミングをするソフト(たとえばVB)なんかは何で作られているのですか?
443デフォルトの名無しさん:02/03/28 23:00
WordなどのマクロでのVBAでスクリプト、ゲーム等は作れるんですか?
444デフォルトの名無しさん:02/03/28 23:09
<Text1.Top>みたいなのを変数に格納したいのですが、
その際、dim xxx as ???
             ↑なんて指定したら良いのですか。
>443
Excelでオセロとか作ってるのは見たことあるよ。
やってできない事はない。

>444
そのプロパティの型と同じ型。
MSDNに
>Left プロパティおよび Top プロパティの値として、単精度浮動小数点数を設定することができます。
ってあるぞ。
446422:02/03/28 23:25
>>441
> どううまくいかないんだ?

432の8行目で、「オブジェクトがありません」(800A01A8)といわれます。
コメントになってるところが、エラー処理をしようとした残骸です。
Shell・・・の返り値の処理が間違ってるみたいです。

> >>434
> さんざん言われてるが、APIビューアは間違いが多い。ヘッダから書き下ろす
> のを勧めるぞ

そうなんですか。 ???.txtの修正版とかないんですかね?
447422:02/03/28 23:33
ちょっと別の話。

MSDNみてて疑問におもったんですが、VBScriptって
もしかして2つ以上の戻り値を受け取れないんですか?

VCでCOMつくってVBScriptから使おうと思ったんですが、つまるところ
 Set Hoge = CreateObject("Hoge.Hoge")
 Status = Hoge.Func(InVal, OutVal, OutVal2)
 IF OutVal = "aaa" And OutVal2 = "bbb" Then
みたいな設計はできないってことでしょうか?
448デフォルトの名無しさん:02/03/28 23:45
>442
C

>443
速度をあまり必要としないゲームなら可能。

>444
そのプロパティ自体はSingleだが、小数点以下は
特殊な座標系用だから、Longで宣言する人が多い。
449デフォルトの名無しさん:02/03/28 23:50
ある数値を奇数、偶数と判断するようなことはできませんか?
450443:02/03/28 23:52
>>445,>>448
なるほど。一応可能なんですね。いや僕VB買おうかどうか迷っててそれで
聞いてみたんですよ。どうしよかなぁ・・。とりあえず、ありがとうござ
いました!
451まとれす:02/03/29 00:01
>>442
バイナリイメージを見てみればある程度想像はつくが、おそらくVC++だろうな

>>443
作れないことは無いぞ

>>444
Topプロパティの変数型を調べてみろ

>>446
だな

If objFolder Is Nothing Then

で判断してみろ

どっかに置いてあったな。AlllAPIか?

>>499
Mod演算子について調べてみろ
452デフォルトの名無しさん:02/03/29 00:04
>>449
If (i mod 2)=0 Then
Debug.Print "偶数"
Else
Debug.Print "奇数"
End If
453422:02/03/29 00:09
>>451
> If objFolder Is Nothing Then
> で判断してみろ

できました。NullはNothingなのですね。どうも。

> どっかに置いてあったな。AlllAPIか?

検索してみます。
454高飛車:02/03/29 00:27
>>449みたいなのは ホント初心者だなw
VB以前の問題だぞw
でも みんな最初はそんなもんか?w
まっいいか
じゃあ 厨たちにお題だ
3次方程式の解の数を判定するコードを書いてごらん
純粋に数学的論理アルゴリズムだw
まず数学でこれができんと お話にならんがなw
455デフォルトの名無しさん:02/03/29 00:35
>449
たとえばあなたは26632という数を見て偶数か奇数かどうやって判断していますか?
それと同じことをコンピュータにさせればいいのです。
これがわからないなら悪いことは言いませんからプログラムをマスターしようなんて
思わないでパッケージソフトだけ使っていてください。
456デフォルトの名無しさん:02/03/29 00:43
>>451
そうしたら、VC++はなにで作られてるのですか?
457デフォルトの名無しさん:02/03/29 00:53
>>449
一番下のビット見れ。
>457>おまえも いじわるだな
ビットの判定できる法がわかってたら
…以下は省略されました
459まとれす:02/03/29 01:00
>>451
ワンポイントに出てくるけど、VCはVCで作られてるぞ
460とうりすがり:02/03/29 01:02
>>454
ついでに話にのろう
厨たちにヒントだ
3次方程式は
必ず実数解を一つ以上もつ
それだけw
461422:02/03/29 01:14
>>459
うろ覚えですが、
 「自分で自分自身を構築できたら、そのプログラミング言語が成熟したといえる」
というような話をどっかで聞いたことがあります。
>>459
WindowsはVCだけで作られているの?
463デフォルトの名無しさん:02/03/29 02:09
VB5のラーニングエディションで作ったプログラム(EXEファイル)
を95以降のウィンドウズで正常に使えるようにするには
どうすればいいのでしょうか?
私はWin98を使っているのですが、やはり
セットアップウィザードを使って、きちんとセットアップする
ファイルを作成した方がいいのでしょうか。
用語が間違ってたらすみません。
>>462
Cとアセンブラって感じ。Cだけではどーにもならん部分もある。
コンパイラはVC使ってるんでしょうな。どのバージョンだが知らんが。
>>463
おい VB5をどこで手にいれたか知らんが
正式な入手なら MSDNヘルプあんだろ MSDNサイトもある
初心者以前が多いぞ ここんとこ
>>451バイナリイメージを見てみればある程度想像はつくが、おそらくVC++だろうな

Spy++でウィンドウクラス名見たほうが分かりやすいのでは?
なんかさっきから初心者質問を煽ってるのって同一人物か?
468まとれす:02/03/29 07:52
>>461
そんな話は聞いたことがないが、必ずしも「自分で自分自身を構築」するわけ
じゃないと思うぞ。古いバージョンで作ればいい訳だしな

>>462
「Windows」の定義が難しいところだが、広〜くみると、VBで作られている部分
が無いわけじゃない。たとえば、OptionPackのツールとかな

>>463
DLL Hellが起こるかどうかは、調べてみないとわからんな

>>466
そうだな。そういう調べ方もある。VBで作ったアプリなんか、一発だな
469デフォルトの名無しさん:02/03/29 09:05
>DLL Hellが起こるかどうかは、調べてみないとわからんな

そうそうこればっかりはやってみないとわからない。VBで作成したプログラムをいろんなマシンに
インストールするとどうしてもうまく動作しないマシンがでてくるというのはよくある話。
ランタイムやDLLの不整合が起こっているせい。セットアップウィザードを使ったからといって
DLL Hellがなくなるわけではない。インストールした後はよくてもOSやソフトのバージョンアップを
したり、新たにインストールしたりするとはまることがある。(特にM$製品)
VBが嫌われるもっとも大きな原因。

Win95は過渡期のものであるからしてDLLHellの起こる可能性は高いといえる。
IE4の有無、Officeの有無で状況が変わってくるので注意。
470デフォルトの名無しさん:02/03/29 09:16
>Win95は過渡期のものであるからして
それとClassic Win95かOSR2以降であるかというのもあったな。
そんなことしないだろうけどVBでwin95以降を対象に一般向けアプリを
作ろうとしたら最低でも
Classic win95 ,OSR2
IE4の有無、
Office97の有無
の環境でテストしないといけない。まあ書き込みからして個別案件といったものだろうけど。

もしDLLHellにはまった場合VB以外を使う、あるいはOS(マシンごと)をバージョンアップする
方が早かったり幸せになれるかもしれないことを頭の隅っこにでもおいておこう。
471まとれす:02/03/29 09:29
>>469-470
そういうことだな

俺の場合、Windows 98を配布対象に、と言われたら、SE以降に限定する。
NT系なら、Windows 2000以降だな。これらの環境では、Side-By-Sideが使えるからな
472443:02/03/29 13:07
すいません、もうひとつ質問させてください。皆さんの回答を総合すると一応
出来るという事はわかったんですが、>>448さんの「速度をあまり必要としない
ゲームなら可能」や、まとれすさんの「作れない事は無い」という事からVBとVBA
ではどう違うんですか?
>>472
そーゆー意味ならネイティブコンパイルが出来るか出来ないかが一番大きいかな。

#ちなみにどっかのスレでExcelでオセロ作ってたの俺だけど。
#さすがにアクションゲームとかはVBAではつらいなあ。
474デフォルトの名無しさん:02/03/29 18:59
String変数内の文字列のサイズを取得したいんですが、
LenB(StrConv(mMojiretsu, vbFromUnicode))
とやるしかないでしょうか?(mMojiretsuがString変数です)
これで確かに実現できるんですが、mMojiretsuの中が大きいと処理速度がとっても遅いです。
もっと早く処理できる方法はないでしょうか。
475ななし:02/03/29 20:34

>>446
むしろ、Dependency Walker の方がよいと思いますけど?

以下、事故レスです。
>>270 さん に対する>>336は間違えですね。m(_ _)m

条件に合う単語数をカウントするだけなら置換する必要はないです。
手元にドキュメントがないので、ウロ憶えですが、Machオブジェクト(オブジェクト
というよりコレクション)を使えば、Instr関数をループで回すより速いです。
そして、VB標準の機能では、Machオブジェクトが使えないので、VBSを使う、という
話です。(Cの方が速い云々の話は置いといて)

説明不足、誤りは指摘してください。
476デフォルトの名無しさん:02/03/29 20:39
フォームから他のフォームを操作したいんですがどうやったらいいですか?
たとえばFORM1のコマンドボタンを押すとFORM2のチェックボックスにチェックをつけられるような感じです。
>>474
lstrlenでも使ってみたら?
478ななし:02/03/29 20:47
>>476
必要に応じて、操作対象クラスの Method | Property を公開(Public)
してください。

これだけの説明じゃ不親切?
479ななし:02/03/29 20:53
>>478

具体的には、

Call frmHoge.Method

または、

frmHoge.Property = Value

といった要領。

対象となる、Method | プロパチはPublicでないと、×。
480476:02/03/29 20:53
>>478
初心者なのでわからないです…。
>FORM1のコマンドボタンを押すとFORM2のチェックボックスにチェックをつけられるような感じです。
たとえばこういうプログラムを作るにはどんなプログラムを書けばいいのですか?
481476:02/03/29 20:57
>>479
やってみます。ありがとうございました。
>>480
Private Sub Command1_Click()
Form2.Check1.Value = 1
End Sub
483476:02/03/29 21:02
>>482
感謝です。ありがとうございました。
使用例を見るとわかりやすいです。
484デフォルトの名無しさん:02/03/29 21:09
ActiveX.dllで作成したプログラムでDBを操作した途中経過を呼び出し元のプログラムに通知するのにいい方法ありませんか?

たとえば
ActiveX.dllで作ったプログラムで10件の連続してデータをDBに追加する場合
一件追加が終了したらフォームのプログレスバーを更新したいのです.
485477:02/03/29 21:22
むっ。lstrlenだと型変換が高くつくね。
486まとれす ◆mato./AI :02/03/29 21:55
>>472
VBAは、ホストアプリケーションがないと実行できない。つまり、Excel VBAで
アプリケーションを作ると、Excelのない環境では動かないわけだ

>>474
APIを使う、ってのがあるな。lstrlen()とか

>>476
Form1.Command1.Value = True だな

>>484
コールバックについて調べてみろ

>>477
そうか? 高くついても、一回だけだろ。ANSIサイズが取れるし
487:02/03/29 23:01
VBがCで作られたというのはわかりましたが、CがCで作られたというのはわかりません。
さあ作るぞ、といって開発環境を立ち上げようとしたときにはまだその開発環境自体がないわけでしょ?
どうやって作るのですか?
488デフォルトの名無しさん:02/03/29 23:30
>>484
WithEvents調べてみなはれ。
489デフォルトの名無しさん:02/03/29 23:31
>>474
どれぐらいのサイズ&処理時間?
質問はできるだけ具体的に。
まあ、APIを使うしかないかな。

>>475
VB6に限定すれば、InStrでvbCrLfをカウントするほうがReplaceより速かった。

対象ファイル 1MB (30,000行)
      IDE     EXE
InStr   0.07秒   0.04秒
Replace  0.78秒   1.00秒
490488:02/03/29 23:34
あとEventとRaiseEventも。
この辺使えるとVBのソレっぽくなりますよ。
491デフォルトの名無しさん:02/03/29 23:35
>>487
VBのような統合開発環境しかイメージにないんだろうな。

最初はまず基本的なことだけ機械語に翻訳できればいい。
ファイルをOPENして、文字列を翻訳し、ファイルに書き込む。
これで自分自身をコンパイルすれば、原始的コンパイラが出来上がる。
あとは、どんどん関数を追加していくだけ。
492 443&472:02/03/29 23:40
>>473サン、まとれすサン回答ありがとうございます。いろいろと障害があるんですねぇ・
・・・・。うーむ、迷う・・。
493デフォルトの名無しさん:02/03/30 00:00
>これで自分自身をコンパイルすれば、原始的コンパイラが出来上がる。

ちなみにPascalコンパイラの場合次のようにしたそうです。某MLより引用

まず、Pascalコンパイラのプログラムを手で紙の上に書く。
人間がPascalインタプリタの気持ちになって(!)、Pascalコンパイラのソースをコンパイルする。
世界初のPascalコンパイラのコンパイルには、2ヶ月かかった....

C++の場合
まずC++インタプリタをCで書く。
できたC++インタプリタでC++コンパイラを書く。
できたC++コンパイラに'自分自身'を食わせる。
>>474
ボルトネックが本当に文字列カウントの部分
か・・・・ということも考えなくては。
495デフォルトの名無しさん:02/03/30 00:16
静的変数って、グローバルで宣言するのと、なにが違うのですか?
あと、これをいらなくなったからって、解放できないのでしょうか。
496デフォルトの名無しさん:02/03/30 00:20
>493
PascalはBASIC並みに高級(=機械語から遠い)だからね。

Cの基本的な部分はほとんどアセンブラみたいなもんだし、
あえてインタプリタを介する必要はないと思うけど。
っていうか、インタプリタ→いんちきコンパイラって
高級言語の話であって、Cの場合は、あとで学習用に
インタプリタが出来ただけで、基本はコンパイラ。
>495
普通の変数とグローバル変数の違いと一緒でスコープが違うだけ。
静的変数はプロシージャ終了後も初期化されないってだけの話さね。
498デフォルトの名無しさん:02/03/30 00:57
>497
なるほど。どっちにしても使わないほうが良いってことですか。
>>498
何れ必要なこともあるかもしれない。まあ、心の片隅にでもしまっとけば。。。
500デフォルトの名無しさん:02/03/30 01:17
MSDNには高速化のためにStatic変数を使う例が載ってるけど、
実測ではあまり高速化されなかった。
しかし、たびたび再ロードされ、規定値以外で初期化する必要がある
大量の変数はStaticにしたほうが二度手間にならない分、高速化される
かもしれない。
>498
グローバルを乱発するよりずっと安全だと思うよ。
プロシージャ内であれば、他への影響も少ないし。
要は使いどころさえ間違わなければ良いだけだ。
502ななし:02/03/30 09:34
>>495-501

スコープ = 有効範囲(空間的)
記憶クラス = 有効期間(時間的)

という理解でよろしいかと思いますが。
Static をスコープを表すキーワードと誤解すると、混乱の元になるかと・・・。

>>475

Machオブジェクト → Matchオブジェクトの間違いです。(ToT)
(大恥)

条件に合致する単語をMatchコレクションに取るのは、RegExp の
Execute メソッドですね。
503デフォルトの名無しさん:02/03/30 22:19
全角のダブルコーテーション「”」について質問です。
例えば
a$ = "”"とした場合は
a$ = """"と半角に置き換わってしまいます。
半角「"」がperlのエスケープシーケンスの様な働きをするというのは分かったのですが
どうしても全角「”」を半角「"」に勝手にvbが変えてしまいます。
これを回避する方法ってあるのでしょうか?
初歩的な質問ですいません。
504まとれす:02/03/30 22:34
>>503
Chr()関数を使え
505デフォルトの名無しさん:02/03/30 23:14
>>503
VBには、そういうおせっかいな仕様がけっこうあるから、気をつけてね。
506デフォルトの名無しさん:02/03/30 23:15
RichTextBoxについて質問です。
実況用みたいな2chビューア作り、ログの表示にRichTextBoxをつかったんですが、
NT系OSだと恐ろしく挙動不審になっちゃいます。
詳細は↓こちらを見ていただけるとありがたいんですが、
http://pc.2ch.net/test/read.cgi/tech/1012544484/232
用はdatをダウンロードしながらどんどんRichTextBoxに追加していくと、
すごく重くなったり、場合によっては落ちてしまうようなんです。

ログに追加してる方法ですが、Selstartでカーソルを末尾に移動して、
Selcolorで色を設定して、Seltextにて追加する文字を表示させてます。
これをレスが1000ついてるスレに関しては1000回も繰り返すわけですが、
200回当たりから級に遅くなり、場合によっては落ちてしまうようで・・。

9x系OSだと全然問題ないんですが、
NT系でもちゃんと表示できるようにする方法はあるでしょうか?
507デフォルトの名無しさん:02/03/30 23:16
VB で CreateThread って使えますか?
508503:02/03/30 23:28
>>504
そうか!ありがとうございました。
>>505
ありがとう。
509デフォルトの名無しさん:02/03/30 23:43
>>507
VB.NETだと使えるらしい。それ以前のバージョンではダメダメ。
510まとれす:02/03/30 23:58
>>506
リッチテキストは結構問題あるぞ。WebBrowserとかじゃだめか?

>>507
VB5SP2以降なら一応いけるということになってる。しかし、普通のコントロール
とかはスレッドセーフじゃないから、実装するのは面倒だ。

ちょっとしたサンプルで試したが、とりあえず動く

>>509
VB.NETだと、System.Threadingネームスペースがあるから、CreateThread()を
使う必要は無いぞ
511506:02/03/31 00:56
やっぱりIEコンポーネント使うのが無難ですか・・・。
起動遅くなるしあんまし使いたくなかったんですが。
512463:02/03/31 02:16
>>468
>>469
>>470
どうもありがとうございました。
とりあえず使える人にだけ使ってもらうようにします。
もうちょっと勉強してきます。
>>506
文字列として取っておいて一気に転送するとか、その文字列も配列にして
ある程度大きくなると次の要素に入れるとか。

まあこれも追加していく様を表現したいなら意味ないアドバイスだな。

速さを優先するなら俺は自前で描画する。めんどくさいけど。

#monazira見たよ。がんばってね。
>>510
VB6でもいけるの?俺無理だったんだけど。
515506:02/03/31 12:25
>>513
追加していく様を表現したいです。
仮に初回を一気に追加できたとしても、次回以降はリジュームして
差分だけ追加していくことになるので、やっぱり繰り返してるウチに遅くなっちゃうでしょうし。

うーんIEコンポーネント使って試してみますわ。
516まとれす:02/03/31 12:53
>>514
どこがどのように無理だったんだ? まぁ、ダニエルアップルマンの記事を見ると
まじめには使えないレベルだったが・・・

>>515
スプレッドとかで使われる技だが、たとえば、コントロールには100行だけを
表示するようにする。そんで、スクロールにあわせてコントロールの中身を変更する
ってのがあるな。

スクロールバーを自分で管理しなくちゃならないなど、いろいろ面倒ではあるが。
コントロールの使うリソースは少なくできるので、パフォーマンスはあがるな

517514:02/03/31 12:57
>>516
スレッドは作れるけどその後の処理がほぼアクセス違反になる、って感じ。
使い物にならんので使えるとは俺は言いたくないのだ。

#もしかしたら使い物にする方法もあるのか?と思ったので。
518デフォルトの名無しさん:02/03/31 14:35
すんません、質問おながいします。
AccessVBAでリストボックスの値を一つ削除すると、「#Delete」って
表示されて、しかも、それを選択することができちゃうので、
明らかにエラーを出しますよ、といわんばかりなんですけど、
これを表示させない方法ってあるのでしょうか。
おながいします。
519デフォルトの名無しさん:02/03/31 15:43
LeftB関数でバイト単位で文字列を左から取得しようと思っています。
ですが、VBはUnicodeを使用しているので、半角英数字など本来は1バイトの文字も
2バイトとして計算してしまうので、
str="abcてすと"
LeftB(a,5)
と実行すると"abc"と表示されます。

私としては、半角英数字の3バイトと全角の2バイトで
"abcて"
と表示されるようにしたいと思います。
どのようにすればよろしいのでしょうか?
いい関数などがあれば教えて下さい。

解決しました取り下げます。
521518:02/03/31 17:48
僕もRequeryかけることで解決しました。スレ汚しスミマセンでした。
522まとれす:02/03/31 17:51
>>517
まぁ、ほぼ同意だな。で、結局スレッドセーフにするためには、APIを使うしかない。
VC++を使ったほうが楽だな

>>520
解決したのはいいが、できればどうやって解決したか書くといいぞ。MLなんか
では、基本的なマナーだな

・・・ここは2ちゃんなんで、お構いなしかもしれんが
523デフォルトの名無しさん:02/03/31 18:46
>>520
Unicodeをstrconvで変換したんだよね?
520です。スマソでした。>>523さんのおっしゃる通りです。
正直、LeftB関数って無意味だと、知りました。
lengthがLeft関数の場合の2倍になるだけじゃないか!!
525デフォルトの名無しさん:02/03/31 21:54
>>524
参考になる意見です 感謝
>>どなたか
VB6.0のコードエディタに行番号を表示させておくにはどのような環境設定をすればいいんですか?
>>525
どなたか
VBのコードエディタで行番号を表示させる必要がどんなときにあるのか教えてくれ。
なんで
Dim MyObj As New MyClass
とやっちゃいけないのですか。
あとでSetする方が2度手間の気がしますが。
528デフォルトの名無しさん:02/03/31 23:28
VB.NETの推奨開発環境は700MHz以上みたいですけど、
作られたEXEの推奨動作環境はどれくらいなんでしょうか?

529_:02/03/31 23:44
>>525
なくても困らないけどあったら便利そうだね
行番号が表示されているのはオレも好み
530デフォルトの名無しさん:02/03/31 23:56
10進数を2進数に変換する関数を教えてください
531デフォルトの名無しさん:02/04/01 00:13
>>530
そういう関数はないので、自作。
と言っても、順番に2^nとAndを取るだけ。

532   :02/04/01 00:16
>>527
ばかは首つりがいい。
533530:02/04/01 01:04
2^nがなんのことかわかりません・・・。
And演算子をどう使うのですか?
534デフォルトの名無しさん:02/04/01 01:09
2^n =「2のn乗」
535デフォルトの名無しさん:02/04/01 01:45
ファイル選択→右クリック→「あほあほまん」
それであほあほまんのプログラムが起動するわけですが、選択したファイル情報を取得するには
どうすればいいのでしょうか?ahoaho.exe %1って感じのやつです。
536デフォルトの名無しさん:02/04/01 01:55
>>533
このスレの前のほうに同じ質問がある。

>>535
コマンドライン引数は、Command関数で取得できる。
537デフォルトの名無しさん:02/04/01 02:15
>>525
行番号はプロシージャレベルで可 しかも手書き
これは伝統的なベーシックの行番号ではなく
ラベルと同じだ
ラベルはわかるね?(・∀・)
538デフォルトの名無しさん:02/04/01 02:37
>>530
いうまでもなくVBに二進数を直接扱う変数型はない
二進表現は文字列を使わざるを得ないが
二進にしたはいいが逆に数値に戻すの手順も必要なのはわかるだろう
二進表現をなにに使うのだ???
そこがポイント
用途によって、くそまじめに二進表現をしなくていいアルゴリズムもありうる
暗号化か?、それともAPIでビット操作が必要か? ビット操作自体は先のヒントのように
二進表現はわざわざいらないぞ
そこんとこどうよ?>>530


539538:02/04/01 02:40
>>530
言い忘れた 横槍きそうだから 連続レス
バイト配列もあるぞw
540デフォルトの名無しさん:02/04/01 02:57
>>537
それまでのレスを見てもわかるように、その行番号ではないと思うぞ。
>>525
ツールバーあたりのステータス情報に表示されるか、それで良いのではという
感じ。漏れは、VBでもエディタでゴリゴリ派なもんでコードエディタ内での
必要性は感じたこと無し。

>>537
あれつけると、errオブジェクトで行番号とれるようになるので、
行番号付加/消去のアドイン作って使ってる。
542まとれす:02/04/01 07:47
>>525
コードエディタは、その機能を持ってないはず。外部エディタを使うぐらいしか
思い浮かばないな。ちなみに、VB.NETのコードエディタでは表示できるぞ

>>527
宣言と生成が一緒の行になるんで、デバッグのときにちょっと面倒、という問題と、
Nothingしても再生成されちゃう、へんな変数になってしまうのが問題だ、という
ことになっている。

ちなみに、これもVB.NETでは問題無し

>>528
MSがどういってるか知らんが、俺のP3-800MHz 256MHzではVB6と同じぐらい
で動いてるぞ

>>529
シェルエクステンションDLL・・・は使ってねーよな。なら、>>536 の言うとおりだ

>>541
erl関数だったか。隠しだな

543デフォルトの名無しさん:02/04/01 11:20
カレンダーコンポーネントのファイル名を教えて下さい
544ななし:02/04/01 12:31
Officeで使うカレンダーーコントロールは、mscal.ocxです。
(VBの場合は、違うかも知れません)
545525:02/04/01 13:59
行番号について勉強になりました。ありがとうございました。
546VBド素人:02/04/01 14:28
Exeファイル作成時に”vaSpread”の型が未定義と言われて困って
ます。どうすればいいのでしょうか?
どなたか襲えてください。
547デフォルトの名無しさん:02/04/01 15:18
VBってインタープリタ言語ですか?
548デフォルトの名無しさん:02/04/01 15:31
>>546
typedef
>>547
両方
550まとれす:02/04/01 20:08
>>546
ちゃんとOCXを追加できてるか?
551ななし:02/04/01 20:28
>>532

感情的になっても、何も得るものはないのでは?
(気持ちはわからないでもないが、建設的ではない)

・・・って、2chで言ってもムダかな?
あるtxtファイルに
------------------------
ccc
999
ddd
ttt
あああ
 ・
 ・
 ・
------------------------
とあって、これを一行ずつコンボボックスに入れて逝きたいのですが、
その際、コンボボックスの上から順に昇順になるようにしたいのですが、
データベースかなんか通してソートするより他ないのでしょうか。
>>552
Sorted=trueじゃいかんの?VBAにはなかったっけ?
>>552
コンボボックスに入れるならSorted=Trueでいいけど、
プログラマならソートのロジックぐらい知っとけ。
555552:02/04/01 21:55
>>553 なるほど。そんなのがありましたか。なるほど。
>>554 どうもです。次のと比べて…って延々ループさすやつですか?
セレクションソート、バブルソート、シェルソート、クイックソート、etc
Private Sub Form_Terminate()
Dim i

For i = 0 To 50000
Open "c:\" & i & ".txt" For Input As #i
Next i

End Sub
>>556
ボゴソートが抜けてる
>>556
ギコソートが抜けてる
560ヘルプミ〜:02/04/01 23:08
ディレクトリリストボックスで、ディレクトリ一覧がボックス内に
表示しきれない場合、マウスのホイールボタンで下にスクロール
しようとすると上にスクロールしてしまいます。
どうしてでしょうか?
>>560
通常の(IEなどの)スクロールバーもそうなのならマウスのプロパティを
弄ることをオススメするが、そうでないなら、そんな症状見たことない。
・・・スマソ。
>>560
マウスをひっくり返して使うとか。
563ななし:02/04/02 09:05
>>562

マウスをひっくり返すと、スマソに・・・・ならないか。

つまらないですね。逝ってきます。
>>563
つまらないというか意味がわかりません。
565デフォルトの名無しさん:02/04/02 16:14
VBで作ったプログラムで、Windowsそのものではなく
プログラムだけを再起動させる方法をご存知の方はおられませんか?

どこかでちらっと聞いたところによると、WM_CLOSEの途中で云々…とか。
詳しい事を教えてください。
566新人研修生:02/04/02 16:46
こういう事聞いていいのか分かりませんが
VBってこれから廃れていくのでしょうか?

VBとRubyはどちらが勉強するにはいいん
でしょうか?
あと、VBをある程度習得したからって他の言語
を勉強する時に役にたつのでしょうか?

変なスレですみません。気を悪くしないで欲しいです
>変なスレですみません。気を悪くしないで欲しいです

スレは変じゃないやい!役立ってるんだい!
568ななし:02/04/02 16:51
>>566

VBの未来はMSの製品維持方針任せだ。いくらユーザーがまだまだ使いたい!
と思っても、あの会社が「止める」といえば、それまで。
(VB6.0のサポートは2005年までらしい)

現実的には、VB資産を多数抱えている会社も少なくないはずで、(お守りの
仕事は)簡単にはなくならないと思います。

- いじょ -
569まとれす:02/04/02 16:53
>>560
そういうものだと思ってる。そもそも、あの辺のコントロールは、旧バージョンとの
互換のためのものだしな

>>565
やろうと思えば、↓みたいな形で出来る

子アプリ起動
   ↓
自アプリ終了
   ↓
子アプリから自アプリ起動
   ↓
子アプリ終了

>>566
廃れるかどうかはわからん。少なくとも、現在の資産は残るがな。Rubyとの比較
だが、ターゲットがまったく違う、ということに気づいてるか?

VBを習得したからといって、他の言語が学びやすくなるとは限らん。最低限の
部分は別だがな。しかし、それはVB以外の言語でも同じだ。ようは、その辺まで
気を配って勉強できるかどうか、だな
570ぷろぐらむ歴1ヶ月:02/04/02 17:41
よくあるファイル読みこみのプログラムなんですが・・

Do While Not EOF(1)
Line Input #1, Buff1

で、どうも本には"Line Input"はファイルの最初から1行を読みこむって
書いてあるんですが・・・

これを任意の場所の1行って言うのはできないんでしょうか・・
571逆アセンブル:02/04/02 17:47
VBで作ったと思われる
DLLファイルをVBのソースに戻すっ方法ってないですかねえ?
逆アセンブルはできてもお手上げ状態なんです。
DQNな質問すみませんが、識者さんお願いします
572まとれす:02/04/02 17:59
>>570
任意の行、ってのはできない。いったん配列にでもとってから操作するか、
ランダムアクセスするしかないな

>>571
ない。ドイツ製の逆コンパイラがあるという話は聞いているが、古いバージョン
のものしかないようだ
>>571
無理。
>>566
マイクロソフトとしては、急ピッチで.NETに移行させたいのだが
ほとんどうまくいってないのが現状。

将来的にMSが顧客無視して強引にサポートを打ち切っても
顧客側に根強い需要があって、しかも世界的に未だWin9xが
現役バリバリ(死語)で稼働しているだろうから
もしMS以上のサポート(開発、保守)が出来るスキルがあれば
逆にチャンスだと思ってるよ 商売的にね。

まずVBでも何でもいいからとりあえず一つの開発環境を
周りから神(゚∀゚)と呼ばれるぐらい極めれ、まずはそれから。
575デフォルトの名無しさん:02/04/02 20:01
多重起動したくない時に書く、
If App.PrevInstance Then End
はEnd Ifが要らないのは何でですか?
576デフォルトの名無しさん:02/04/02 20:10
>>575
一行だから
>>575
多重起動防止の場合というか
if hoge=○○ then △△
と一行で完結する場合はEnd Ifはいらない。
578576:02/04/02 20:12
If A=B then
C=0
End If


は下のように書ける
if A=B then C=0

ケコーン、ケコーン!
580575:02/04/02 20:27
>>577-579
皆さんありがとうございます。
勉強になりました。m(_ _)m
581575:02/04/02 20:28
>>576さんもありがとうございました。
>>579
感謝されたぞ?藁)
583まとれす:02/04/02 20:57
>>575
ちなみに言っとくが、App.PrevInstanceプロパティは完全じゃない。きっちり
やりたかったら、Mutexを使うことを検討した方がいいぞ
584ぷろぐらむ歴1ヶ月:02/04/02 21:15
すみません、さっきもお世話になったものです

Replace(buff2, "<a href="./" & suuzi2 & "/html/index.html">", "")

ようするに置き換えの式なんですが・・buff2とsuuzi2は変数です

<a href="←の["]が置き換えの["]と同じのようで問題があるようでして・・
やろうとすると「修正記号区切りまたは」とかいうエラーがでてしまいます

これはどーするべきなんでしょうか
585デフォルトの名無しさん:02/04/02 21:15
AccessVBAみたいにリストボックスに列を作りたいんですけど、
それ系のプロパティがありません。無い?
もしかして違う名前なんでしょうか。
586デフォルトの名無しさん:02/04/02 21:16
>>584
""
↑重ねる。
587まとれす:02/04/02 21:39
>>584
Const DQ = """"
と宣言しておいて、

"<a href=" & DQ

という風に使う、って手もあるぞ

>>585
Columnプロパティとかないか? APIでメッセージを送って、って手もある
588575:02/04/02 21:54
>>583
そうなんですか。またまた勉強になります。
589ぷろぐらむ歴1ヶ月:02/04/02 22:01
>>586
>>587
ありがとうございます
やってみます
WINAMPみたいにスキン機能をつけることはできますか?
できるとしたら難しいですか?それともめんどくさいですか?
できる。
Winamp級のスキンだと自力で描画しないとだめだからメンドクサイと言えばメンドクサイね。
ウインドウの大きさやボタン配置までカスタマイズ出来るようにするならなおさら。
もっともお手軽な方法なら、フォームのPictureプロパティにLoadPictureしちゃうとか。
背景画像変わるだけ〜とか。
>>590
それは自分でVBで作ったソフトにおいての話か?
だとしたらスキン機能実装も可能だと思うが。
593河童:02/04/02 23:37
プログラミングとは関係ないですが、
VB6で「コンパイル」の文字が「コソパイル」に見えるので気になります…。

自分のアプリのメニューで、半角カナを使うのはまずいですか?
それは正直好きにしろとしか言いようがないな。
>>593
かのMSだって使っているんだ。ロシアの原子力潜水艦に乗ったつもりで安心しろ!
596デフォルトの名無しさん:02/04/02 23:59
>>595
沈んだじゃん。
597デフォルトの名無しさん:02/04/03 00:39
>>568
VB6のサポートは、2008年までだよ。
>>595
でも最近は使ってない気がしない?
599590:02/04/03 01:05
>>591,>>592
レスサンクス。
今作ってるやつに将来的にスキン機能を追加させようと思って。
まだ作ってる途中なんでできるかどうか知りたかった
600デフォルトの名無しさん:02/04/03 05:19
すみません、Excel VBAの質問をどこにしていいかわからなかったのでお願いします。
シートに

体重 | 名前 | 電話番号
--------------------------------
55 | 鈴木 | 090-****-****
67 | 佐藤 | 090-****-****
42 | 山田 | 090-****-****




という感じにデータがあって、これを名前順にソートしたいときには、どうすればいいのですか?
いろいろやってるなかで、なんか「指定した行を優先して並べ替える」というふうなのもあったんですが、
うまくいきませんでした。
601デフォルトの名無しさん:02/04/03 11:40
こんにちは。
"今日 昨日"(全角スペース)を"今日, 昨日"(半角,と半角スペース)に
変換したいのですがうまくいかないです。お願いします。
602デフォルトの名無しさん:02/04/03 11:45
バイリニヤ法でビットマップを拡大しようとしてるんですが、
SetPixelV/GetPixelを使って色の取得/設定を行うと正確に結果が出るのですが、
DIBSectionを利用して拡大すると、画像が歪みます。
プロシージャの各所でDouble使ってるんですが、その誤差の影響でしょうか。
ちなみにPictureBoxからGetDIBitsしてRGBQUAD型の配列に入れたりその配列を
SetDiBitsしてPictureBoxに表示する関数は某所からコピペしたものです。。
説明が不十分なんですが、画像が歪まない解決法はありますか。
やっぱりコードを貼ったほうが良いですかね。。
>>601
VB6だったら
a="今日 昨日"
a=Replace(a," ",", ")
604601:02/04/03 11:49
>>603
速レス、ありがとーございます。さっそくやってみます。
>600
五十音順で並べたいという事なら、ふりがなが必要になるぞ。
あと、うまくいかなかった時はどううまくいかなかったのか(こういう結果を
期待していたが、実際はこうなった)を書いたほうが解決が早いと思われ。
606ななし:02/04/03 13:03
>>597

ご指摘感謝。m(_ _)m
607600:02/04/03 13:23
>>605
名前で五十音順にしたいのです。
範囲を選択して、ツールメニューのなかの並べ替えをしたのですが(名前の行を最優先に並べ替え、
みたいな項目にチェックをいれて)、宮崎さんが佐藤さんの上にあったりして、結局ソートされてませんでした。
608デフォルトの名無しさん:02/04/03 13:57
>>600

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。

>五十音順で並べたいという事なら、ふりがなが必要になるぞ。
>>608
いじめない。

漢字で並べ替えると文字コード順になってしまうということだ。
名簿を作るときは、はじめからふりがなを付けなければならない。
それでふりがなを使って並べ替えればOK。
610ななし:02/04/03 14:21
>>608-609
正論ではある(新規に作る場合は当然、ふりがな項目を設ける)が、
前任者の設計がタコな場合、困るよね。(20ユーザー超、データ数
平均10,000件だったりすると・・・)
>>607
Application.GetPhonetic()でフリガナを作成して、その列をキーにソートするといいでしょう。
612デフォルトの名無しさん:02/04/03 22:50
part3で放置プレイされてたようなので質問します。
WebBrowserコントロールをフォームに貼り付けて使ってるのですが、
フォントの変更はどうやったらできるんでしょうか?
(それらしきプロパティがないのですが…。)
もしくは、フォントの大きさを変更禁止にはできないですか?
613デフォルトの名無しさん:02/04/03 22:51
VB6.0でEXCELを起動し印字しています。

Dim oEXCELapp As Object '' Excelオブジェクト
Dim oWorkbook As Object '' ワークシートオブジェクト
Dim sAdd(3) As String '' エクセルファイル

Set oEXCELapp = CreateObject("Excel.Application")
oEXCELapp.DisplayAlerts = False

For i = 0 to 3

Set oWorkbook = oEXCELapp.Workbooks.Open(sAdd(i))
With oEXCELapp.ActiveSheet.PageSetup

End With
oEXCELapp.ActiveWindow.SelectedSheets.PrintOut Copies:=1

oEXCELapp.Quit
Set oWorkbook = Nothing

Next i

Set oEXCELapp = Nothing

Exit Sub

上記の処理が終わった後でタスクマネージャを見ると
まだエクセルが起動したままなのですが、
Quit や Set = Nothing 以外にもエクセル終了に必要な
処理があるのでしょうか?
OSはNT4.0です
>>613
詳しくないし検証してないし適当に答える。
まず一つQuitの位置がおかしくないか?
もう一つOpenしたのはCloseしたほうがいいと思うぞ。
615デフォルトの名無しさん:02/04/03 23:15
これからプログラムを作る場合、.NETを視野にいれて、
Open / Input # / Close などよりも FileSystemObject をつかって
ファイル操作したほうがよさげですか?
a = List1.List(List1.ListIndex)

With List1
a = .List(.ListIndex)
End With
一行だけど下の方が早い?
617デフォルトの名無しさん:02/04/04 00:10
>>616
1行だけだと、差はミリ秒以下。
618デフォルトの名無しさん:02/04/04 00:15
>>616
ループ回して
timeGettime()で測定せよ
そして報告せよ
なるへそ。
少しでも、みたいな心意気を見せる為。
ありがと。
620デフォルトの名無しさん:02/04/04 00:22
>>619
ミリ秒削ってこそミューマッハ。
さらにはセナ。
621デフォルトの名無しさん:02/04/04 00:22
間違え。シューマッハ
やってみた。
50万回回して0.07秒のずれで下が早い。
心意気、イイ!
623デフォルトの名無しさん:02/04/04 00:28
>>620
ワラタ
ココがF1板だったらアゴはミューマッハで定着するでしょう

激しく板違いスマソ
624報告ご苦労!:02/04/04 00:34
     ∧∧  ミ  _ ドスッ
     (   ,,)┌─┴┴─┐
    /   つ 622=セナ│
  〜′ /´ └─┬┬─┘
   ∪ ∪     ││ _ε3
            ゛゛'゛'゛

>>622
50万回で0.07s!
すなわち140ns短縮に成功!
オメデト
>>622
ループの中でWith・・・・?
それとも、Withをループの外に?
Winsockコントロールを使ってメールソフトを作っているんですが、
なぜかVB上で起動させた時に右上の×ボタンを押しても起動している状態が続くんですけど
推測できる原因はなんでしょうか?
VBの■ボタンを押したら終了したことになるんですが・・・
628 :02/04/04 06:15
Winsock1.Close
を実行してもだめ?
629デフォルトの名無しさん:02/04/04 07:14
>>627
正常終了させてねw

ところでVCにも詳しい方に質問です
テキストBOXが空欄のtext1.text と VBのString型変数の""では
VB上では同じ扱いですがVC(API)では違いますね?
さて、VBの文字列型変数でこの 空欄のtextプロパティと同等にするには
どんな扱いにしたらいいのでしょうか?
vbNullStringでもないようです
630622:02/04/04 07:54
>>625 ループの中でやったよ。
631627:02/04/04 09:24
なんとか解決しました。
winsock1.closeでもダメだったんですが、
form2をunloadさせてから終了するとうまくいきました。
でも一度もform2をshowしてなかったんだけど。
>631
Showしなくても、Formのプロパティ等にアクセスがあればLoadされちゃうから注意せよ。
633デフォルトの名無しさん:02/04/04 15:16
ファイルをごみ箱に移すときにごみ箱に移しますか?のメッセージボックスを出さない方法はないでしょうか?
634デフォルトの名無しさん:02/04/04 15:56
>>631
OSはNT系?
NT系ならアプリが終了すれば勝手にソケットをクローズしてくれるけど、
9X系だと開きっぱなしなので、次に起動する時支障が出ると思われ

>>633
ごみ箱のプロパティで「削除の確認メッセージを表示」をはずす。
って、これはプログラムじゃねぇ(´Д`)

VBの表記法で質問
16進は&H 8進は&O
2進はどうやって書けばいい?
635デフォルトの名無しさん:02/04/04 16:27
>>634
そうだったんですか?今まで知りませんでした。
ちなみにそのチェックをVB上から外したりつけたりすることは可能なのでしょうか?
初心者なので高度な操作が必要なら「おまえには無理」って言ってください。
636デフォルトの名無しさん:02/04/04 16:36
>>635
レジストリを変更すれば可能だと思う。
レジストリを変更するAPIはあるけど、
どのキーをいじればいいかはわからないなぁ・・・
「レジストリ」「ごみ箱」をキーに検索してみてください

初心者なら いろいろやってみるのが吉。
がんばれ
637デフォルトの名無しさん:02/04/04 16:59
全くの初心者なんだけど、用意するもの、参考にするとよいものを
教えていただけますか?
Visual Basic・・・これ基本
VBの入門書・・・あるといい
(今はネットでも勉強できる)
639デフォルトの名無しさん:02/04/04 17:08
>>638
どうもです。
>>636
なんとかやってみます。
>>639
自分はVBについているヘルプの使用例をフォームに貼り付けて
へろへろとやってます。
あとはネットで必要なキーワードで検索。
それでもわからなかったら2chで聞いてます。
641418:02/04/04 18:11
悩んでいます。
VBの場合、

Dim FN
FN = FreeFile

Open "C:\test.txt" For Output As #FN
Write #FN, "aaaaa"
Close #FN

で、テキストファイルを生成するとおもうのですが、
これと同意でVBScriptで動くにはどうしたらいいでしょうか。
642デフォルトの名無しさん:02/04/04 18:24

すいません。初心者質問なのですが、
拡張子を変更せずに、リネームする方法を教えてください。

ヒントだけでもいいのでよろしくお願いします。
643デフォルトの名無しさん:02/04/04 18:30
>>642
リネームするファイルのファイル名を取得する

拡張子を取り出す

で、いいかと
644デフォルトの名無しさん:02/04/04 18:45
>>643
レスありがとうございます
ファイル名を取得→拡張子を取り出す→リネーム→拡張子を付ける→(゚Д゚)ウマー
ってことでしょうか?難しそうですね。

ありがとうございました。
645641:02/04/04 19:18
CreateTextFile
で自己解決しました。
646デフォルトの名無しさん:02/04/04 19:49
>>644
それが難しかったらこれから何もできないぞw
"."でInStrRevして、Right$で拡張子抜き出して、
リネームしたいファイル名と結合。
647デフォルトの名無しさん:02/04/04 21:15
Midの方が簡単
648超初心者です:02/04/04 21:33
Enterprise EditionやProfessional Editionなどありますが何が違うんでしょうか?
>>648
違いは買った後の懐のぬくもり具合。
初心者ならどうせ使いこなせないから安いやつで十分。
あ、でもLearning Editionはやめとけよ。アレは罠だから。
pictureボックスに画像読み込んでJpegで保存する方法ソース解説できぼんぬ
651デフォルトの名無しさん:02/04/04 23:25
>>650
こころの声を聞け。
652デフォルトの名無しさん:02/04/04 23:30
>>633
Shift+Delキー

>>650
超有名なDLL使え!

653631:02/04/04 23:32
>>632
なるほど、そうだったんですか。
確かにshowしなかったけどアクセスはさせました。
それでかー

>>634
OSはWin98です。
そうですね、form_loadで一応起動ごとにクローズさせてます。

レスありがとう。
654629:02/04/05 05:18
自力解決〜
s=””のままだったのが まずかった
if len(s)=0 then s=vbNullString
やっぱりvbNullStringでよかった
APIのほうが お馬鹿な 仕様で
ログインユーザー名と パスワード・・・もろもろで
URLを再構成するInternetCreateUrl(wininet.dll)なんだけど
パスワード空でユーザー名だけ指定すると全部ご破算で エラー〜
ユーザー名、空の時は パスワードも空にしてやらないと…って いう報告でした
できたよ これで! Winsock+Wininet 最強カスタムコントロール
(・∀・) 何に使うかって? ナイショ
655デフォルトの名無しさん:02/04/05 05:32
>>653
正式には
Connectするんならその時点でまず閉じておく
接続中エラーが出たらもちろん閉じる
もちろんリモート側が閉じたらこちらも閉じる
基本中の基本だ
なぜ自動で閉じる仕様じゃないのかって?
( ̄ー ̄)ふっ
いろいろあるんだな使い道が…
自動で閉じてるのはお子様仕様…w

656デフォルトの名無しさん:02/04/05 06:33
>>654
文字列の格納方法がCとVBで違うだけ。
657644:02/04/05 09:17
>>646>>647
レスありがとうございます。
RightとMid使って、無理矢理やりました。

しかし、VBには拡張子を簡単に取得するような関数がないんですね。
拡張子を変えずにリネームってだけで、やたらと難しかった。

ありがとうございました。
最近まとれす来ないな。

#果てしなく関係ないのでsage
659バナナマン:02/04/05 12:20
超初心者的な質問で申し訳ないのですが、プログラムを作る際最初に変数を宣言した後に
すぐにこれから使う変数全てに格納するのと、変数を使う直前に変数を格納するのとでは
実行した時には同じ物が出来るのですか?
実行結果は同じでも、コンパイル結果は違うんじゃない?
661デフォルトの名無しさん:02/04/05 16:50
統合アーカイバプロジェクトHP( http://www.csdinc.co.jp/archiver/ )の情報のなさに愕然としているのですが…
unlha32.dll等のDLLを使いこなしてるページ知りません?
検索しても解凍ソフトの解説ページくらいしかでてこないし、
dllの作者のページにもほとんど情報がなかったので…
# APIなどの情報じゃなく、使用例などです。
>>661
unlha32ならアーカイブに詳しいドキュメントが付いてるけど?
663661:02/04/05 16:55
実際にアプリケーションで使うようなコード例もありましたか?
もっかいしらべてみよ…
>>663
ああ、今の若い子ってlha.exe知らないか。
一度ダウンロードすることをおすすめ。よくわかる。

VBにぴったりのぬるい仕様だよ。基本的には。
665661:02/04/05 17:05
>>664
そういうDOSプログラムがある、という知識だけはあるのですが(;−;
DLしてみます。
どうもありがとうございました。
666デフォルトの名無しさん:02/04/05 17:31
>>665
具体的な使い方ならVB de UNLHAとかソース
公開してたりしてて、いろいろあるよ。
解凍だけしたいなら、LHA.EXEも(・∀・)イイ!けど
書庫の中をいぢったりするなら、すんなりとはいかないかも。
667デフォルトの名無しさん:02/04/05 18:02
教えて下さい。
VC++ から呼べる DLL を VB で作りたいんですけど、
どうしたらいいんですか?
どなたか質問してくださるとありがたいです。
エクスプローラーの様な、多段多階層でツリーを構築していく
プログラムについてです。
 展開させたツリーの最下層から任意に選んだものを、一つに収束させ、
更に下の階層で表示させるのは可能ですか?また可能であれば、
どのようにしたら良いでしょうか?加えて、そのような物を作れるツール
があれば、教えて頂けると幸いです。
禿げしく概出だったらすいません。
>>667
普通にActiveX DLLを作れ。

>>668
書いている内容がよう分からんが、そのようなものを作れる
ツールの一つがVBだ。作るのはお前。頑張れ。
>>668
具体的すぎます。そして、意味不明です。
671デフォルトの名無しさん:02/04/05 21:18
質問なのですが、クリップボードの中身のTEXTを1行づつ、
変数に入れていく方法、教えてください。
ファイルなら、うまくいくんですが、、

お願いします。
>>671
ClipboardオブジェクトのGetTextメソッド使え。
使い方はヘルプな。
っていうか、クリップボードでヘルプ見ればすぐわからんか?
673デフォルトの名無しさん:02/04/05 21:52
          阪神ワッショイ!!
      \\  阪神ワッショイ!! //
  +   + \\ 阪神ワッショイ!!/+
                             +
   +    ⌒*⌒  ⌒*⌒   ⌒*⌒
      ( ´∀`∩(´∀`∩)( ´∀`)
 +  (( (つ   ノ(つ  丿(つ  つ  +
       ヽ  ( ノ ( ヽノ  ) ) )
       (_)し' し(_) (_)_)
674デフォルトの名無しさん:02/04/05 21:59
>>672
一行ずつって言うのがミソなんじゃない?
とりあえずSplitでデリミタvbCrLfで配列にぶち込め。
675671:02/04/05 22:00
>>672
レスありがとうございます。
GetTextメソッドですね。
今からやってみます
ありがとうございました。

676      :02/04/05 22:27

 Visual Basic での画像処理について、分かりやすく書かれているページを教えてください。
677661:02/04/05 22:35
>>>666
レス遅くなりましたがありがとうございます。
とりあえずLHA.EXE手にいれて、他の人のソースを付き合わせながら調べてます。
OpenArchive系も使わないと上手くできそうにない…

レスくれた方々、thanx!
678671:02/04/05 22:37
>>674
レスありがとうございます。
確かに、ファイルならLine input #で何とかなるんですけど、
クリップボードはやっかいですね。

ありがとうございます。いまからSplitでデリミタvbCrLfを調べてやってみます。
679デフォルトの名無しさん:02/04/05 23:07
>>676
ひとくちに画像処理と言っても、ピンからキリまである。
VBで速度的になんとかなる範囲は限られてるが。
別にVBでなくったっていいじゃん。
681680:02/04/05 23:16
>>679
はい、入ってくるPCMデータをフーリエ変換してそのスペクトラムをリアルタイムに表示したいです。
>>682
VB以前にPCMデータをフーリエ変換する処理を理解することが先だな。
理解したらあとはVBでも他の言語でも実装するだけだ。
そういうプログラムを探してパクって終わりなんて考えてたら甘いよ。
>>682
VBでってのは見たこと無いが、Cならそこらじゅうの
デヂタル画像処理本とかにあるよ。
685デフォルトの名無しさん:02/04/06 00:42
>>682
スペクトラムの表示程度なら、あんまり画像処理とは言わない。
それより、リアルタイムFFTは、VB向きではないと思う。
精度にもよると思うけど。
まあ、がんばってみるといいよ。
Cでやればいいのに
687もうだめぽ:02/04/06 01:29
過去ログの1のリンクが切れてます。
あたらしいリンクをおしえてください
http://piza.2ch.net/tech/kako/
こっから探せる。

■■■VB初心者質問スレ■■■
http://piza.2ch.net/tech/kako/968/968328471.html
689デフォルトの名無しさん:02/04/06 06:12
フォームにボタンを一つ貼り付けて終了するときに確認のメッセージボックスを出すようにしました。
ところがボタンでの終了のときに“はい”を選ぶと二度メッセージボックスが表示されます。どこが間違っているのでしょうか?
メニュー項目の終了からやろうとしているのですが、これも同じことになります。

Option Explicit

Private Sub Command1_Click()
  Call Form_Unload(True)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim RtnMsg As Integer
  RtnMsg = MsgBox("終了しますか?", vbYesNo)
  'はい・・・終了
  If RtnMsg = vbYes Then
    Unload Me
  'いいえ・・・キャンセル
  ElseIf RtnMsg = vbNo Then
    Cancel = True
  End If
End Sub
690デフォルトの名無しさん:02/04/06 09:03
>>689
それまさに再帰コール。
Unload Me=終了ではなく、Unloadプロシージャを実行すること。
691ななし:02/04/06 11:36
>>689

その程度の間違いは、ほぼ誰でも通る道のような気がする。(天才的な人を除く)
俺も、同一じゃないけど、似たようなことをやった記憶があるし・・・。

理屈どうこうよりも、何が正しい書き方で、何がヘンな書き方(または、危ない書き方)
なのか、自分でいろいろ試して、身体で憶えてしまった方が早いと言えなくもない。
692671:02/04/06 12:56
>>674
ありがとうございます。うまくいきました。
これは便利な関数ですね。

ありがとうございました。
693自作するのめんどい:02/04/06 13:49
SplitがないOffice98のVBAは糞。
694デフォルトの名無しさん:02/04/06 14:07
>>689
Unload Me ---> End でいいんだべ?
695ななし:02/04/06 14:55
>>690

厳密には、再帰とはビミョーに違うような気がする。
Call Form_Unload(True)
なら再帰だけど。
>>695
再はともかく帰しないな。
697デフォルトの名無しさん:02/04/06 16:09
質問お願いしたいのですが、

標準モジュールからform1のプロシージャを使いたいのですが、
標準モジュールに
Form1.mnuEditPaste_Click
と書いてもうまくいきません。
どのように書けばいいのでしょうか?
よろしくお願いします。
698デフォルトの名無しさん:02/04/06 17:09
>>697
そういうときは、プロシージャの宣言を
Public Sub mnuEditPaste_Click()
~~~~~~
にして標準モジュールから Call mnuEditPaste_Click
でいいんじゃない?
VBはクソ
>>699
暗黙の定理です。
701698:02/04/06 17:26
>>698
レスありがとうございます。
おそらくうまくいきました。

けど、また違うところでこけてしまった、、、

ありがとうございました。
702:02/04/06 19:35
Microsoft Visual Basic6.0のインストール方法を教えてください。
ちなみに途中でインストールを止めてしまったことがあり今のパソコンでは
インストーラーが自動的にたちあがりません。
また、CDロムは一枚だけでいいんでしょうか?
すいませんが、よろしくおねがいします。
>>702
1. アンインストールできるようであれば、アンインストールする。
2. アンインストール後、インストール先ディレクトリが残っているようであればそれを削除

したことないんで、上手く行くかどうかは不明。責任もちませんです。

OSから再インストールが最強だね(w
704:02/04/06 19:46
アンインストールできません。です。
CDロムは一枚でよいのでしょうか?

>>704
CDの中のSetup.exeを実行すれ。

>CDロムは一枚でよいのでしょうか?
そこはかとなく意味不明。
706:02/04/06 20:05
どこのディレクトリのsetup.exeをたちあげればいいのでしょうか?
ルートのsetup.exeはMSDNのインストールとかがでてきます。
MSDNって何?絶対必要?
お前それVBのディスクじゃなくてMSDNのディスクちゃうんかと小一時間問いつめたい。
708705:02/04/06 20:08
>>706
いらんなら入れんでいいが、ヘルプが見れない。PGとして致命的。

#普通に購入したのならMSDNはついてくるはずなんだが。(VS6.0では)
709:02/04/06 20:15
MSDNの最新版ってどこでGETできるのでしょうか?
みんなNHK教育を見よう。
スクイーク(SmallTalkの発展型)の話してる。
オブジェクト指向の勉強になるぞ。
711デフォルトの名無しさん:02/04/06 20:34
基本的な質問ですがモジュール間の配列の
受け渡しは出来ないのでしょうか?
712まとれす:02/04/06 20:48
>>694
下手にEndで終わらせるのはよくないぞ

>>699
じゃあ、なんでそのクソ言語がこれだけ使われてるんだ?

>>709
買え。だが、2002/01版は、VS6で使えないので注意しろ

>>711
できる。バージョンによってはできなかったかもしれん
>>689
Command1で書くべき命令はUnload Me

終了しますかのメッセージはQueryUnloadイベントでやった方がいい。

UnloadイベントおよびQueryUnloadイベントでUnload Meは必要ない。
キャンセルするときにはCancel=True。キャンセルしないときは
そのまま(Cancel=False)になっていればいい。

Endはやめとけ。
714689:02/04/06 22:23
みなさん、ありがとうございました。今やったらできました。
うまく動きました。これでいいんですよね?
昨日は夜中これと格闘していました。なんか本当に頭こんがらがってきてしまった。

Option Explicit

Private Sub Command1_Click()
  Unload Me
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim RtnMsg As Integer
  RtnMsg = MsgBox("終了しますか?", vbYesNo)
  If RtnMsg = vbYes Then
    Cancel = False
  ElseIf RtnMsg = vbNo Then
    Cancel = True
  End If
End Sub
おお まとれす復活(´∀` )

それはいいとして
>>709
MSDNは加入するとCD送ってくる
タダではない
Studio買った者には1年間無料でCD送付である(英語+日本語版両方)
そのあとは有料
加入にもレベルがあって
OS込みのものもある
ただし、ふつうの最低レベルのものはMSDNサイトで一般公開しているものだ
まあインストールできるぶんだけ使い勝手は違う
おっと まとれすも言われてるように
MSDNHELPは新しくなっている
よりブラウザ風である
XP対応スペックないと重いかも知れない(´Д`;)
まあ使えることは使える
使えないという意味は 今までのMSDNHELPとは互換性がない
内容は相変わらずだw
日本語版が”糞”というのは普遍である(´∀` )
関係ないんだけどOfficeXPとMSDN2002/01のスタイルが大ッ嫌い。
なんでわざわざフラットにするのかね。遅いし。VS6じゃ使えんし。くそ。
717デフォルトの名無しさん:02/04/07 03:50
ラベルコントロールに表示した文字に、境界線を付けて表示する事ってできないんでしょうか。
境界線は、あくまで文字の境界線で、(いわゆる縁取りって奴です)オブジェクトの境界線ではないのですが・・・。

MSDNみても、オブジェクトの境界線についてしか書いてないし、調べても出てこないのですが。
718デフォルトの名無しさん:02/04/07 04:16
VB6.0なのですけど
印刷データ(外部ファイル)をVBで読み込んで
印刷用アプリにAPIで読み込んだデータ引き渡そうとしていたのですが
VBでSTRING型変数読み込んだ時点でUNICODE変換されて
外字データが壊れると言う現象が発生してしまいました

BYTE型の変数に格納しても、そのままでは化けたままなので
使えません
このファイルを読み込んで、データを壊さず(UNICODEに変換されず)
そのままDLLの関数に引き渡す方法はないのでしょうか?


データベースを初めてやってmdbファイルでメール管理しようとしたら
レコードの各フィールドには文字数の上限があるのをしらずに最後までつくちゃった。
いたたた
>>☆
そのVB、買ったのか?
721まとれす:02/04/07 10:42
>>715
気にかけてくれる人がいる、ってのはうれしいもんだ。ありがとう

>>716
遅いかどうかはあまり気にならないが、目次ツリーを取得するツールが動かなく
なったのが痛いぞ

>>717
AutoSizeプロパティをTrueにして、コントロールの境界線を表示、ぐらいしか
できないな。あとは、自分で描画するしかない

>>718
バイト配列に読み込んで、バイト配列のままAPIに渡す。「化けたまま」ってのが
よくわからんが

>>719
ロングバイナリとかでどうだ? もしくは、キーだけ格納して、大きくなるところは
別ファイルにするとかな
722デフォルトの名無しさん:02/04/07 11:03
MP3のタグ情報っていうんでしょうか、アーティスト名とか曲名とかの情報は
VBで取得したり、書き換えたり出来ませんでしょうか。
>>722
出来るよ。やり方は知らんけど。
>>722
自力でもできるけど、
VBMP3.dll使わせてもらえば楽チン。
725デフォルトの名無しさん:02/04/07 11:59
文字列の反転表示ってどうするんだっけ?
>>725
API叩いてね。
727725:02/04/07 12:02
>726
何のAPIだっけ?
>>727
それくらい調べてね。
729725:02/04/07 12:10
>>728
なんだコイツ
731通りがかり:02/04/07 12:26
>>725
Text1.SelStart = ○
Text1.SelLength = ○
Text1.SetFocus
じゃダメ?
732725:02/04/07 12:35
>>731
ああ、そうか、ごめん。俺の説明不足。
テキストボックスじゃなく、TextOutでのXOR処理のこと。

一応BitBltのSRCINVERTとTextOutと別バッファで今自己解決したけど、
もっとスマートな方法があるはずだと思う。

#ごめんね。
733デフォルトの名無しさん:02/04/07 17:39
>>717
縁取りではないが、ラベルコントロールを2枚重ねれば影付き表示ができる。
前面のラベルは縁なし、背景透過でな。

そうじゃなく文字の周り全部に縁をつけたいなら、
PrintメソッドでPictureBoxなりFormなりに自前描画。

Public Sub PrintEx(ByRef obj As Object, _
ByVal sText As String, _
Optional ByVal mForeColor As OLE_COLOR, _
Optional ByVal X As Single, _
Optional ByVal Y As Single, _
Optional ByVal mBackColor As OLE_COLOR, _
Optional ByVal Huti As Single = 1)

Dim i As Single
Dim j As Single
Dim tmpForeColor As OLE_COLOR

tmpForeColor = obj.ForeColor

obj.ForeColor = mBackColor

For i = -Huti To Huti 'Step Huti
For j = -Huti To Huti 'Step Huti
obj.CurrentX = X + i
obj.CurrentY = Y + j
obj.Print sText
Next
Next

obj.ForeColor = mForeColor

obj.CurrentX = X
obj.CurrentY = Y
obj.Print sText

obj.ForeColor = tmpForeColor
End Sub
734nosu:02/04/07 19:17
VBAのlistboxの操作をいろいろしたいのですが、
Columnの使い方を教えて下さい。
ヘルプを見てください
いや、マジで質問のレベル低いぞ。
737nosu:02/04/07 19:28
すみません。listboxに入っているある位置のデータを
別のlistboixの指定した位置にコピーしたいのですが
やり方を教えて下さい。
考えてください
>>738
そりゃひどいぞ
>>737
自分の使うコントロールのプロパティとメソッドくらい把握してください。
適当だけど
List2.AddItem List1.ItemData(Index1), Index2
こんな感じでよし。
742nosu:02/04/07 19:36
VBAでJANコード別の売上金額を集計して更に
店舗別に商品ごとの売上集計をするものを作って
いるのですがlistboxのところでつまづいているので
わかるかた教えて下さい。
すっごく間違えた。
ItemDataぢゃなくてListね。
List2.AddItem List1.List(Index1), Index2
プププ
>nosu
質問の仕方が悪い。
現在どうなってて何をしたいのかが見えづらい。
MSDNのヘルプ見ればわかることばかりだ。
745デフォルトの名無しさん:02/04/07 20:51
バイナリファイルの扱いについて質問です。
バイナリの入出力ってPut/Getを使うしかないですか?
2つのファイルを結合して1つのファイルを作ったり、その逆(分割)をしたいのですが。
VC++でDLL作って利用、みたいなことがネットに乗ってましたけど、もってないっす…
>>745
fopen
>>745
CreateFile あたりを調べてみるとよいのでは...
748デフォルトの名無しさん:02/04/07 21:41
>>745
http://zero-city.com/fcs/vb.html
ここらへんは?
>>745
それもGetPutで出来るよ。
750デフォルトの名無しさん:02/04/07 23:32
厨房質問で恐縮ですがコンボボックスのテキストに
フォーカスをTrueにしたいのですがどうしたらよいのでしょうか?
Defaultじゃ無理でした。
>>745
VB4.0の頃、PutとGetで作ったよ。
んなむつかしいもんじゃないよ
setfocus
753デフォルトの名無しさん:02/04/08 00:05
>>751
VB4もUnicodeだっけ?
754デフォルトの名無しさん:02/04/08 00:07
>>750
コンボボックスの特定の行を選択状態にしたいってこと?
フォーカスをTrueに出来るのはコントロールだけだよ。
>>753
どーゆー意味だ?
Unicodeに対応しているかってことか?
756デフォルトの名無しさん:02/04/08 00:28
>>755
Unicode変換さえなければ、文字列変数がそのまま使えて楽ってこと。
>>756
まあ、ファイルの分割/連結ぐらいなら、素直に Byte 型使うんじゃない
かと...。
758デフォルトの名無しさん:02/04/08 00:49
>>757
まあ、そうなんだけど。
大きなファイルだと遅くなるから、CのDLL使うわけで。
759745:02/04/08 02:54
レスしてくれた方々ありがとうございました。
数メガ単位のファイルを結合するのでやたら遅い気がして…(実装が悪いのか)
あ、別に怪しいソフトを作ってるわけじゃないですよw
760749:02/04/08 09:51
>>759
ファイル処理はどの言語でやっても早さは大して変わらん。
HDDの速度のほうがずっと遅いから。

どうしても早くしたいならキャッシュを使ったりするんだけど、そこでなら
VC++の方が少しは早くできるかな。でも大して変わらんだろうな。
OSにもキャッシュ機能付いてるから時間の無駄か。
フレキシブルグリッドの複数選択したセルをドラッグアンドドロップ処理ってできますか?
私はいろいろやったけどできませんでした。
やったことあるって人やこうすりゃできるって思った人、教えてくれませんか?
>>759
ファイルマッピングをすれば多少は早くなるかもとか言ってみるテスト。
763デフォルトの名無しさん:02/04/08 23:18
こっちが最新スレだよage
764デフォルトの名無しさん:02/04/09 00:34
あるフォームと、あるフォームの辺をくっつけて、
どちらかを移動させると、2つのフォームが同時に
移動していくみたいな良い方法知りません?
765まとれす ◆mato./AI :02/04/09 00:49
>>764
WM_MOVINGを処理して、移動処理を書くしかないな

#どうも、うちのプロバイダから書き込みができなくなったようだ。そのうち来れなくなるかもしれん
766デフォルトの名無しさん:02/04/09 01:19
>>764
Timer使って監視する方法が初心者向け。
767VB初心者:02/04/09 04:37
これが初心者質問スレか…
レベル高いな…
768761:02/04/09 05:43
あの、ドラッグするとコントロールの大きさの線が出ますよね?
あれって消したりできるんですか?
モニターの電源ボタンを押せば消えます
>>765
串使ってもダメ?
スレ盛り上げ最大功労者の1人なのに。


771ななし:02/04/09 08:53
>>764

>>765のまとれす氏のが正解。(実際、やったことあり)

でも、サブクラス化は、正直、かなり危険。
>>767
中級者質問スレが無いせいもある。
出来たとしても廃れるのが確実だということもある。
773バナナマン:02/04/09 11:28
VBプログラマーの実務ではどういうものが一番需要があるのですか?
ネットワークですか?データベースですか?
私はグラフィック関係(サークルやラインなど)がかなり苦手なのですが,
これはちょっとやバめですか?
774まとれす ◆mato./AI :02/04/09 11:31
>>767
そうだな。正直中級以上の質問も多いと思う。だが、初心者には、自分の質問のレベルが
どの程度かわからんだろう

>>768
普通はコントロールに任せてるから、自分で描画するのは大変だと思うぞ

>>770
今は、批判要望非難板で紹介されてた串を使ってる、しかし、いつ使えなくなるのかわからん

>>771
確かに、サブクラス化は危険が伴う。ウィンドウメッセージについてきちんと理解していないと
難しいし、デバッグもしづらいからな。しかし、VBでできないことをやりたいなら、理解しておいた
法がいいな
775まとれす ◆mato./AI :02/04/09 11:36
>>773
結局、その会社によるわけだが、俺の経験上データベースに接続するフロントエンド、
ってのが一番多いと思うぞ。データベースは、Accessに始まって、SQL Server、Oracle
あたりが多いな

ネットワークは、今のインターネット時代にあわせて、ちょこちょこ接続するとか、メールを
送るとかいった機能が求められることがある

グラフィック関係は俺も苦手なんだが、実のところ、仕事では一度も使ったことがない。
大体、画像表示とかで済んでしまうしな

この辺を考慮すると、VBで開発する上でVB以外で役立つ知識としては、

 1. データベース(SQL)
 2. C(APIやったり、DLL作ったり)
 3. ネットワーク(HTTP、FTP、SMTPとかの基本な)
 4. その他

って感じじゃねーか
776デフォルトの名無しさん:02/04/09 13:57
VBでメモリークリーナーをつくりたいんですけど

Dim AAA() as Byte

Redim AAA(開放するメモリ量)
Erase AAA

が、VBの限界ですか?
>>776
(゚Д゚)ハァ?
>>777
確かにw
>773
VBメインな会社ならほぼ間違いなく業務システムを手がけているはず。
だから、やっぱデータベースでしょ。
VB(VBA)+SQLはセットと思っておいた方がいいと思う。
780776:02/04/09 14:32
>777
>778
何かおかしいですか?
一応空きメモリは増えてるみたいですけど・・・
>>780
気のせい
>>776
そんなんシェアで公開するなよ。
どっかの馬鹿シェア作家みたいになるぞ。
783776:02/04/09 14:43
GlobalMemoryStatusで処理の前後の値を見比べて
値が増えていても気のせいだと?
>>776
あなたの限界。つーか仕組み分かってる?
785776:02/04/09 14:51
>784
いやよく解ってないから質問したんだけど、
GlobalAllocとGlobalLockでメモリブロックの先頭アドレスとって
0で埋めれば良いのでは?
>>785
VBでもAPIは使えるよ。
>>785
とりあえずメモリの解放と掃除するっていう意味を調べてからもどってらっしゃい。
ttp://hp.vector.co.jp/authors/VA017832/mclean/doc/faq_answer02.html#q63
788776:02/04/09 15:29
>786
APIを使うとこまではいったんですけど、
メモリブロックの先頭アドレスを取ってからが…
ポインタが使えないのでAPIでやるのはあきらめたんですが…

>787
見てきました。サンクス。
いたずらに大きな変数を作ってもダメって事ですか、
VBでは無理なんですか?
789デフォルトの名無しさん:02/04/09 15:47
>>788
varptrでポインタ
ByvalでなげればPcharと同じ動き
配列のアドレスはarr(0)で投げる
いったいなんの意味があるんだよ。ばかじゃねーの
791776:02/04/09 16:29
>789
悪戦苦闘中です。varptrは変数のポインタを取るんじゃ…
やっぱりCで組まないとダメですかねぇ…
792デフォルトの名無しさん:02/04/09 20:10
VBから使える素敵なフリーのエディタコンポーネントってないですか?
標準のTextBoxは64K(32K?)の編集容量制限があるし、
RichTextBoxはバグ満載だったりNT,2K,XPで不具合があったりと問題が多いみたいなので。
近い将来MSがVBから手を引くという噂は本当ですか?
794まんこ(反VIA協会):02/04/09 20:29
>>792
あきらm(以下略
795VBA(EXCEL):02/04/09 21:03
こんばんわ すごく単純なことかも知れませんが
Userformを作成した時に 必ず出てきてしまう 
終了ボタン(右上の×マーク)を無効にする方法ってありませんでしょうか??
又は、表示させないとか 押された時の処理をする Sub の作り方等々
インターネットで検索しても”これだ”という回答が見つかりません。
796768:02/04/09 21:10
>>774
そっか、自分で描画するのは大変なのか・・・
あきらめようかなぁ。
unloadのcancelをtrueに
>>795
なんで、クローズボックス無効にしたいのか良くわからないんだけど...。
その手のボタン (=最大化、最小化、閉じる と システムメニュー) を全部無効
にするなら...

Option Explicit

Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowPos Lib "user32.dll" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal uFlags As Long) As Long
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Private Const HWND_TOP As Long = 0
Private Const SWP_NOSIZE As Long = &H1
Private Const SWP_NOMOVE As Long = &H2
Private Const SWP_NOZORDER As Long = &H4
Private Const SWP_FRAMECHANGED As Long = &H20

Private Const SW_SHOW As Long = 5

Private Const GWL_STYLE As Long = -16
Private Const WS_SYSMENU As Long = &H80000

Private Sub Form_Load()
  Dim WindowStyle As Long
  Const ChangeBit As Long = WS_SYSMENU

  Call SetWindowLong(Me.hWnd, GWL_STYLE,_
    GetWindowLong(Me.hWnd, GWL_STYLE) And Not WS_SYSMENU)
Call SetWindowPos(Me.hWnd, HWND_TOP, 0, 0, 0, 0,_
    SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOZORDER Or SWP_FRAMECHANGED)
Call ShowWindow(Me.hWnd, SW_SHOW)
End Sub

でできるよ。(お約束だけど、エラーチェックしてないからね。)

単に、終了させたくないだけなら >>797 の方が安全で確実。
>>797,798
ありがとうございます。
ACCESSのDB使っているんですが、クローズボックスで終わらされると
DBクローズのステップを踏まないので終わってしまうんです。
ちと組み方が間違えている感じがするのですが よく判らないので
だったら、クリックできないようにしてしまえ と考えたのです。
やってみます。
800798:02/04/09 23:35
>>799
DB クローズ処理ってどこに書いてます ? Form.Unlaod, Form.QueryUnload
もしくは Form.Terminate に書いてあれば、クローズボックスで終了された時も
実行されるはずだけど...。個人的には、>>798 みたいなやり方は、どうしても
それが必要な時に限るべきだと思う。
>>800
普通の sub の中で書いています。

rs1.close
rs2.close
unload userform1
unload userform2

という感じです。
いままで、DB使ったことなかったので 終わったら終わったでかまわなかった
ですが、
ありがとうございました。
>>795
http://www.gwork.com/magazine/issue/vb0008.htm
僕はこれ使ってます。
いや、つーか>>797さんの方法と同じなんだろうけど。
とりあえず・・・ね。
803デフォルトの名無しさん:02/04/10 00:40
VBで作ったプログラムをコンパイルしてexeファイルを作ったところ、約170KBになりました。
これをもっと小さくする方法ってありますか?
804 :02/04/10 01:09
>>801
ExcelのUserFormですよね?
でしたら、Visual Basic エディタでUserFormにQueryCloseイベント
を追加し、その中でDBをクローズするようにしましょう。
>>803
漠然としすぎ。
806デフォルトの名無しさん:02/04/10 02:10
UPX使えばいいと思う。
圧縮すればいいと思う。
808デフォルトの名無しさん:02/04/10 03:35
たぶん初心者によくあるFAQです

VBはごぶさたでしたのでひさしぶりにやってみたら
HTMLに慣れすぎたのでVBに帰ったら唖然…
色を自在につけたテキストをクリップボード選択コピーしたいのですが
リッチは使いません(ActiveXはサイズが大きくなるし以外に融通きかないし)
どんな手がありますでしょうか?
ピクチャーBOXにPrintで書いたテキストだめだよね?
何がしたいかというと…HTMLソーステキストを分析して色づけしたいのです
あ”テキストBOXで読ませてから書けば??<今思い出した…
その手ですか〜?
なんかムダのような…
テキストBOXサイズ制限あるし…
やはり色表示テキスト自体コピぺできるように…
ああHTMLに毒された…プログラ失格…鬱だ


| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| つよい電波がでています |
|____________|
               /
              <
             / ビビビ
        \_\_\
   _     \ \ \
  /||__|∧   __|___
 (O´∀`)  | |::::::::::::::::::::::|
 (つ   つ/ |::::::::::::::::::::::|
 / ̄ ̄ ̄≡ .|;;;;;;;;;;;;;;;;;;;;;:|
 |        |::::::::::::::::::::::|
810808:02/04/10 03:44
うう鬱だ その強さ
電磁シールドがない
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| 電波を感知しました。 |
|__________|
              / /
              /
      _         ビビビ
     /||__|∧    /
  。.|.(O´∀`) /
  |≡( ))  ))つ
  `ー| | |
    (__)_)
なんか最近意味不明な質問多いな。
813ななし:02/04/10 07:54
>>803

>>805氏のおっしゃるとおり、漠然とし過ぎ。
機能(FP?)に比してコードが長過ぎる、というのであれば、作り方がヘタクソな公算が大。
適切に構造化すべし。
>>803
Pコードでコンパイルすればいいんでは
815デフォルトの名無しさん :02/04/10 08:42
今、ゲームプログラムを作っているのですが、
UnloadやEndステートメントを使ってプログラムを停止させても、
Windowsが解放してくれないらしく、その後そのexeファイルが
削除・上書きなどの操作を受け付けなくなってしまいます。

(エラー:このファイルはWindowsが使用しています)

プログラムの状況は、
・メインフォームが一枚、その上にピクチャボックスが一枚
・ピクチャボックスにCompatibleなメモリBMP・DCが5枚(Unload時にに解放)
・mciSendStringで実行中はBGMを鳴らしている(Unload時に停止)

他に思い当たる節が無いんです。
詳しい方どうかご教授お願いします。
App.PrevInstance
>>816


>>815
どっちにしろ何か解放し忘れてるか処理を終わらせてないんだよ。
>>815
ウィンドウが消えているだけで、プロセスが残っているということはありませんか。
タスクマネージャからプロセスを確認してみてください。
820デフォルトの名無しさん:02/04/10 11:25
2つの画像を左右にくっつけた状態で、
1つの画像として表示・保存させたいのですが、どのようにすれば良いのでしょうか?

画像を重ねる必要はなく、単に横に並べてくっつけるだけです。
821デフォルトの名無しさん:02/04/10 11:38
>>815
>mciSendStringで実行中はBGMを鳴らしている(Unload時に停止)
停止?
クローズじゃなくてか?
>>820
初心者用:PictureBox追加、PaintPictureで描画、SavePictureで保存
中級者用:GetDIBitsでデータ取得、SetDIBitsで表示、自前で書きこみ

好きなほうでどうぞ。
823デフォルトの名無しさん:02/04/10 12:22
VBでYAHOOメッセンジャーを制御したいんですけど
例を出すとVBで他のアプリのコマンドボタンを押し続ける処理って開発可能ですか?
もし可能ならどんなAPIを使うのでしょうか?
>>823
VBならSendKey、APIなら直接メッセージ送るかKeybd_eventだな。

使い方はMSDNでよろしこ。
825820:02/04/10 14:27
>>822
早い返事、ありがとうございます。

初心者用の方法で試してみました。
特に問題なさそうですので、この方法を使ってみます。
826  :02/04/10 16:09
質問なのですが、
本に載ってるコードを使ったり、HPに載ってるコードをほぼ、丸写しして、
そのコードが含まれたプログラムを作って、それをHPに置くというのは違法でしょうか?

あるいは、フリーウェアならOKでシェアウェアならNGとかあるのでしょうか?

よろしくお願いします。
>>826
使ってOKって書いてるならOK。書いてないならダメ。
828826:02/04/10 16:17
>>827
即レスありがとうございます。
そうしたら、パクリはほぼダメってことですね。
(コード使ってもいいって書いてあるのが少なかった)

自分なりに書き直したらいいのかな?
829827:02/04/10 16:25
>>828
とは言ったものの、実際コードパクっても見分ける方法なんて無い。
HPに置いてるなら公開している方もその辺分かってるだろうし。

使ってもいいと思うよ。

#俺はあんまりそのまま使わんけど、めんどくさい時は丸写ししちゃう。
830826:02/04/10 16:38
>>829
レスありがとうございます。
プログラム作ったはいいが、ちょっとそれが引っかかったので、

ありがとうございました。
831ななし:02/04/10 16:51
>>826-830

転載、流用の是非は、作者が意思表示しているはず。
不明であれば、問い合せるべし。(スジを通すのであれば)

パクリOKなら、どんどん有効活用すべし。(技術は「盗む」もの)

ただし、他人のものをパクるときは、内容をよく理解し、完全に自分のものに
してから使うこと。
(内容が理解できない「呪文」状態では、メンテできないので)
832デフォルトの名無しさん:02/04/10 17:19
enumってLongだけだっけ?
833_:02/04/10 17:24
質問ですずうずうしいですがすみませんよろしくおねがいします。
指定した座標の色を取得したいのですがどなたかわかる方いらっしゃるでしょうか
私でもわかるように教えてください。

と教えて君やるぐらい知りたいから教えれ。
>>833
GetPixel
指定された座標のピクセルの RGB (赤、緑、青) 値を取得します。

COLORREF GetPixel(

HDC hdc, // handle to device context

int XPos, // x-coordinate of pixel

int nYPos // y-coordinate of pixel

);



パラメータ

hdc

デバイスコンテキストのハンドルを指定します。

nXPos

色を取得するピクセルの x 座標を、論理単位で指定します。

nYPos

色を取得するピクセルの y 座標を、論理単位で指定します。

戻り値

関数が成功すると、RGB 値が返ります。現在のクリッピング領域の外側の座標が指定されたときは、CLR_INVALID が返ります。

解説

ピクセルは、現在のクリッピング領域の内側になければなりません。

すべてのデバイスが GetPixel 関数をサポートするわけではありません。GetPixel 関数がサポートされているかどうかを調べるには、GetDeviceCaps 関数を使ってください。

対応情報

Windows NT: バージョン 3.1 以降
Windows: Windows 95 以降
Windows CE: バージョン 1.0 以降
ヘッダ : wingdi.h 内で宣言
インポート ライブラリ : gdi32.lib を使用
835デフォルトの名無しさん:02/04/10 17:39
ガイシュツだったらスマソ。
VBデザイナの「ウィンドウ」メニューのさ、
「上下に並べて表示」、「左右に並べて表示」の対応Altキー。
「上下」が「V」で「左右」が「H」の間違いじゃない?
俺のデザイナだけ?
>>835
あ、ほんとだね。
837_:02/04/10 18:08
>>834
サンクス。やってみる。
>833
Pointメソッドじゃダメなんか?いや別にAPIでもいいけどね。
839833:02/04/10 19:41
くはぁっ
確かに教えてもらったGetPixelで取得はできますた。
けどこれだとWindowsのどこからでも色を拾う事が出来ないんじゃないのか?
いや俺が無知なだけならスマンけど。hdc設定しなくちゃいけない所らへんでそう思ったのだが。
840833:02/04/10 19:43
念のためage
>>839
GetDCも使え。
842デフォルトの名無しさん:02/04/10 20:10
Excel VBA で、C の popen のようなことは出来ますか?
ヒントだけでもお願いします。Excel 2000 です。
843826:02/04/10 20:26
>>831
レスありがとうございます。
意思表示が微妙なのが結構ありまして、
ダメ、とは書いてないが、いいとも書いてない

内容は今勉強中だから、片っ端からMSDN使うときも多いです。
それでもわからないことが時々、、

れすありがとうございました。
844ななし:02/04/10 20:31
>>843

がんばってください。
845デフォルトの名無しさん:02/04/10 20:58
誰か教えてください。VBでの質問が2つあるんです。
1.ウィンドのタイトル取得の仕方。
2.スペースキーを押し続ける処理の仕方です。
私の考え方は、1.はユーザーに入力させる。
2.は無限ループでスペースキーをシステム側に送る処理です。
合ってますか?
>1.ウィンドのタイトル取得の仕方。
自アプリのウィンドウならCaptionプロパティ
他アプリのウィンドウならGetWindowTextあたりのAPI。

>2.スペースキーを押し続ける処理の仕方です。
押しっぱなしにするのか連打するのかどっちだ?
それとスペースキー押下を受け取るのは自アプリか他アプリか?
ちょっと前にもでてるけど、SendkeysかKeybd_event()APIか
あるいはメッセージ送るのいずれかだな。
>>842
何をするのだ?
848デフォルトの名無しさん:02/04/11 01:17
マウスで文字をかいたり線を引いたりするのは、MouseMoveイベントのところにかけば
いいのですか?それともDragOverですか?
849デフォルトの名無しさん:02/04/11 01:22
>>848
両方やってみる
どっちがいいか自分で体得する
じゃないと身につかないよ いつまでも
850デフォルトの名無しさん:02/04/11 01:23
>>848
まず両方やってみて、違いを覚えるほうが勉強になる。
851808:02/04/11 01:27
今来ました
>>808ですけど だれか〜
ってこれってテキストエディタの作り方までいっちゃうから
面倒なのかな?
秀丸に聞くか(藁
>>851
808の文章がよくわからん。
853808:02/04/11 02:02
ええ?
ノーマルのTEXTBOXでは色を1文字単位で色つけられませんよね
ただ表示するだけならフォームでもピクチャーボックスでも簡単に色づけ表示できますが
これではクリップボードのテキストコピペが使えません(グラフィックだもんね これじゃ)
そこをなんとか…
HTMLで色ばりばりに慣れすぎたかしらw
リッチテキストBOXだけは避けたいな

>>808
Clipboard オブジェクト使えばいいぢゃんかよぉぉぉ
855848:02/04/11 02:37
>>849,850
・・・ですね。いろいろ試してみます。
856808:02/04/11 03:18
>>854
あくまでテキストのコピペなんです
フォームやピクチャーボックスに表示したテキストは
グラフィックでしょう?
色は自由に使いたい+コピペしたい
です
これは…表示グラッフィックテキストと実テキストを別々に格納して
マウス操作を監視して クリップボードに叩き込むしかないかな
うわ!VBでカラーテキストエディタやろうとしてるよ
パフォーマンス×ぽいな
フォームにHTMLドキュメント貼れるようなのあったような!?
あれに自在にテキスト書けないかな?
なんだっけ?Internetコントロールが提供するクラスじゃなかったっけ?
英語リファレンス見るしかないのかな…また鬱だ




857デフォルトの名無しさん:02/04/11 03:38
VBであるキーボードのキーを押し続けるなんて可能でしょうか?
ループで、あるキーを送るのでしょうか・・
858808:02/04/11 04:47
>>857
Declare Function GetAsyncKeyState Lib "USER32" Alias "GetAsyncKeySatet" (Byval vKey As Long) As Integer

引数(ひっきー): vKey 調べるキーの仮想キーコード(VBのKeyCode定数でもよい)

戻り値:
 押されている=下位ビット0がON 押されていない=ビット0がOFF
 以前にこの関数を呼び出したあと キーが押されていたら 上位ビットがON
 そのアプリがキー入力を受けとれないとき 0(または押されていない)
integer型わかるね? まあ単純に 関数<>0でも 判定可
参考
第nビットのON、OFFを判定
値 and 2^n 
ONなら 0以外である

あれ?キーが押されてるか判定じゃないのか?
でもこれゲームにつかえるぞ VBのイベントはリアルタイムにはダメ
859808:02/04/11 04:52
あ” 連続投稿スマソ
 Aliasの とこ スペルちがうわ
"GetAsyncKeyStatet"(×)→  staet→state そのままね
860808:02/04/11 04:54
わ〜鬱だ! 
"GetAsyncKeyState" だ

もう鬱鬱・・・・
861C屋:02/04/11 06:05
>>858
蛇足だがWIN32APIダイレクトのラッパーなら
Win95で読み取れないキーがあるよん。(MSDN参照)
てすと
863デフォルトの名無しさん:02/04/11 11:40
日付計算で頭を悩ませています。

ある年月日のnか月前を表示したいのですが、以下の方法で試したところうまくいきません。

DateSerial(intYear, intMonth - n, intDay)

たとえば、3月30日の一カ月前をこの式で算出した場合、
2/27と出したいのに、
3/2と出てしまいます。
(おそらく、2/30→3/2ということだと思いますが)

なにか良い方法があるでしょうか?
ご存知の方、よろしくお願いいたします。
864即レス:02/04/11 11:43
>>863
Dateadd
質問なんですが、
皆さん、INIファイルなどに設定を書き込むとき、変数のキーの値の型は何にされてますか?

stringなどの文字型のみしか書き込まないか、それとも
stringなどの文字型、integerなどの整数型を混ぜてるか、

integerで書き込むと数値を直接操作できて便利、
だけどキーが見つからないとき ""が返されて、型が合わなくなる、、、

皆さんの意見を参考にしたいので、よろしくお願いします。
あと、用語などが間違ってる&変かもしれませんが、柔軟にお願いします。
866バナナマン:02/04/11 12:30
VBをつかってデータベースの処理をする場合でも基本的なコントロール
はかなり知っておかなければいけませんか?それともデータベースで使う
コントロールを重点的に知っておいた方がいいですか?
867バナナマン:02/04/11 12:37
>>863
dateadd("m",-1,date)でいけるとおもいますが・・・・。
もしこれで駄目ならformatで日付を表示させたらいけると思います.
>>865
普通は文字列で読みこんでコードで変換するんでないの?
俺はiniファイルなんてほとんど使わんが。

>>866
後者で十分でしょ。
他のは必要になってからでも遅くない。
>866
データベースならSQL覚えれ。
SQL知らずにコントロール使う奴ってタチ悪いよ。
870865:02/04/11 13:10
>>868
レスありがとうございます。
普通は文字列で読み込むんですか、なるほど、
コードのがややこしくなるけど、しかたないですね、それは

ありがとうございました。
871デフォルトの名無しさん:02/04/11 13:46
StatusBarコントロールにProgressBarコントロール埋め込む方法が判りません!
IEのようにしたいんですけど・・・。
よろしくです。
872863:02/04/11 14:15
レスありがとうございます。

DateAddで試したところアッサリできました^^
ありがとうございました!
873デフォルトの名無しさん:02/04/11 14:51
asp内のVBScriptで悩んでいます。
<SELECT 〜
<OPTION 〜
でコンボボックスを作成して、いくつか項目を入れて選択できるように
したのですが、クリックして項目変更した際にそのタイミングで自分自身(asp)
に回帰して、自分にHTTPクエリか何か(get?)で選択したOPTIONのVALUE値を含めて
返したいのですが、方法はありますでしょうか。
解る方お知恵をお貸し下さい...O=(_ _;;;
も、もしかしてJavaScriptでないと...
874デフォルトの名無しさん:02/04/11 14:57
>>873
onClickかonChangeか忘れたけどイベント拾って
自分自身のURLに値くっつけてHTTPクエリでおくりゃいいじゃん。
自分自身にはそのHTTPクエリが存在するときの処理を書くと。
875874:02/04/11 15:11
>>873
あ、そういう意味が判ってないのかな?
クライアントサイドスクリプトじゃないとだめ。

つか、俺 >>871 なんだけど誰か教えてくれぇ〜
御返事ありがとうございます。>874氏
クライアントサイドスクリプトとかいう言葉の意味すら解らないアフォですので、
至らない部分があったらごめんなさい。
今調べてきましたが、基本的に「サーバーサイドスクリプト」で組み立てるつもりです。
その場合、↓(コピペですが)
SELECT NAME="menu1" onchange="location.href=this.options[this.selectedIndex].value;"
とかでも行けますか?
これはjavaScriptじゃないと介錯しましたが、これでいけるようなら万々歳です。
これから試してみます。
ありがとうございました。
878874:02/04/11 15:47
ドキュメントとして送信してクライアント側で処理されるスクリプト
箇所がクライアントサイドスクリプトね。
つか、画面上のテキスト表示を変えるだけとかのためのリロードだったら
クライアントサイドのみで書いた方がいいよ。
いちいち更新してたら操作する方も面倒だよ。
<script language="JavaScript" for="slc" event="onchange">
<!--
switch(this.value)
{
case "1":
document.all("comment").innertext = "1を選んだです";
break;

case "2":
document.all("comment").innertext = "2を選んだです";
break;

default:
document.all("comment").innertext = "許さんです";
break;
}
-->
</script>
<select id="slc">
<option value="1">1.マ板
<option value="2">2.プ板
<option value="3">3.その他
</select>
間違ってたらスマソ。
てか、VBScriptあんまり知らなかったりする。
879877:02/04/11 15:53
>>871
http://www.remus.dti.ne.jp/~y-mac/teclib/staprog.htm
これもあったぞ。ちょっとあれだが。

俺がやるんなら直接描画するかな。やったことないけど。
880874:02/04/11 16:02
>>879
イパーイありがと。
こう、埋め込まないと処理中にウィンドウサイズ変えられた時に
どうしてもズレちゃうんだよねぇ。
だからVBラボのはちょっと・・・
881874:02/04/11 16:15
うーん、
StatusBarコントロールの
Panelsコレクションメンバの
Panelオブジェクトのハンドルってどうやって取得するのん?
882デフォルトの名無しさん:02/04/11 17:10
あ、VBスレあったのね・・・(´Д`;)

質問なんですが、フォルダ内のファイルの数とファイル名をリストアップ
するにはどうしたらいいでしょうか(´Д`;)?
883即レス:02/04/11 17:12
>>882
Dirと再帰関数。
884すいません。かなり初心者です:02/04/11 17:12
VB.netを使っていまして
左から全角文字の桁を2バイトとして読みたいのですが
MidBってコマンド(?)は.netでは使えないみたいなんです。
検索など使ってみたのですが、なかなかいい答えがありません。
どうすればいいか教えてください
885デフォルトの名無しさん:02/04/11 17:22
うーむ・・・再帰使うのかぁ・・・
Dir使うって分かっただけでもありがたやー(´Д`;)
886873:02/04/11 17:30
>874氏
ありがとうございます。JavaScriptまで書いてもらって...
アフォには874氏の質問答えられずスマソですが、
とりあえずそれ試してみます。
887デフォルトの名無しさん:02/04/11 17:34
>>885
FileSysObject使ってみ
888874:02/04/11 17:42
>>886
うぉ〜まだ居たのか(俺もか)
<%
 if request.querystring("selection") = "1" then
  response.write("リロードしました。")
 end if

 Dim buf
 buf = ""
 buf = buf & "<script language=""VBScript""><!--" & vbCrLf
 buf = buf & "Sub slc_OnChange()" & vbCrLf
 buf = buf & " Dim x" & vbCrLf
 buf = buf & " x = document.all(""cls"").value" & vbCrLf
 buf = buf & " Select x" & vbCrLf
 buf = buf & "  Case ""1"":" & vbCrLf
 buf = buf & "   window.navigate(""http://127.0.0.1/index.html?selection="" & x)" & vbCrLf
 buf = buf & " End Select" & vbCrLf
 buf = buf & "--></script>" & vbCrLf
 buf = buf & "<select name=""slc"">" & vbCrLf
 buf = buf & " <option value=""1"">オプション1" & vbCrLf
 buf = buf & "</select>" & vbCrLf
 response.write(buf)
%>
てな感じでしょ?
俺はもう帰宅するぞ!
889874:02/04/11 17:51
訂正
> buf = buf & "Sub slc_OnChange()" & vbCrLf
buf = buf & "Sub_slcOptions_OnChange()" & vbCrLf

> buf = buf & "<select name=""slc"">" & vbCrLf
buf = buf & "<select id=""cls"" name=""slcOptions"">" & vbCrLf
890874:02/04/11 17:52
あ゙〜!もう訂正の訂正!
>> buf = buf & "Sub slc_OnChange()" & vbCrLf
> buf = buf & "Sub_slcOptions_OnChange()" & vbCrLf
buf = buf & "Sub clsOptions_OnChange()" & vbCrLf

※動作確認はしてませんので他にバグがあるやも。
891873:02/04/11 18:07
>874氏
うぉぉ、たっぷりありがとうございます。
まだ現在、教えてもらったもをふまえていろいろやってる最中です。
>まだいた
エヘエヘ,今日は終電ケテーイ
892バナナマン:02/04/11 21:43
前から思っていたんですが,ここにおられるプログラマーさんは独学で覚えたんですか?
それともやっぱり学校かなにかで教えてもらったんですか?
893ななし:02/04/11 22:07
>>892

技術は「盗む」もの、とだけ言っておこう。
(オレの言葉じゃ説得力ないけどね)
>>893
せっとくりょくないですね(w
895教えてください..:02/04/11 22:10
Visual Basic .NET Standard ってSQL言語使えるのでしょうか??
アクセスのDBからデータ取得、表示を行いたいのですが

896まとれす:02/04/11 22:51
>>792
何がしたいのかわからんが、それらの関数ならVBから使える。すぐに、
「Cでないと」というのはどうかと思うぞ

>>792
日本では見かけたことがないな。EmEditorのコンポーネントは、昔フリーだったんだが
今は有料だしな

>>793
MSのファーストランゲージは、C#になった。あとは、C#が成功するかどうかだな

>>826
転載にきびしいところもある。トラップをしかけてるところもな。気をつけた
方がいいぞ

>>832
そうだ

>>842
何がしたいのかよくわからんが、パイプではだめか?

>>857
keybd_eventでは、押下とリリースが送れる

>>881
SPYで見てみたが、パネルはハンドルを持ってない。プログレスバーから
位置を指定するしかないな。SetParent()するサンプルを見かけたことがあるぞ

>>882
VBらしい方法なら、Fileリストボックスのアイテム一覧と、Countプロパティだな

>>892
基本的に独学だ

>>895
まだ出てないのでわからんが、System.Data.OleDb を使えばいいわけなんで、
たぶん大丈夫だと思うぞ

897まとれす:02/04/11 22:59
@ITのVB.NET記事について言わせてくれ

基本的に、あの川俣ってやつは、VBがわかってないな。それは、Dateの問題で
突っ込まれたとおりだ

本気でメールを書こうかと思ったが、あれ以外にも3つ4つ気になるところや
おかしなところがある

奴はBASICがわかってる、ってだけで書けると思ったのかもしれないが、
大きな間違いだな。よっぽど、NothingButの方がよくわかってる

あれなら、俺が書いたほうがまだましだ
898デフォルトの名無しさん:02/04/11 23:22
>>884
System.Text.Encodingを使えばOK。
>>892
俺は学校でプログラミングを覚える選択肢がある今の時代がスゴいと思うな。
900899:02/04/11 23:35
このスレで答えてるヤツって俺の他に数人しかいないのか?
と俺の書き込み履歴を見てふと思った。

#関係ないのでsage。いつもsageだけど。
901まとれす ◆mato./AI :02/04/11 23:54
>>900
実際のところ、どこのコミュニティでもそんなもんだ。何人かの答えるやつと、
その数十倍の質問者、さらに数十、数百倍のROM

質問するやつがいなければ、そのコミュニティは廃れていく。PCDNのようにな
902826:02/04/12 00:03
>>896
レスありがとうございます。
結構他人のコードを参考にするんですが、トラップとは具体的に
どのようなものでしょう?
コードをパクると、不安定になったり、おかしな動きをすることでしょうか?
それとも、著作権云々で言ってくるのでしょうか?
903デフォルトの名無しさん:02/04/12 00:05
コンボボクースを展開して、DELキーで消すには、どのイベントでどうやれば良いっすか。
そう、ちょうどIEのオートコンプリートの値を消すかのように。
904まとれす ◆mato./AI :02/04/12 00:32
>>902
ここで言う「トラップ」ってのは、ソースコードに、普通使わないような書き方を忍び込ませて
おく、ってことだ。変数名を変えたり、コードのコメントを削除したぐらいじゃ、すぐに見破ること
ができる

>>903
イベント自体はKeyDownでいいが、かなり面倒そうだな。特に、リストを開いた状態だと、何の
イベントも発生しないし。

と思って、ちょっと試してみたが、KeyDownイベントで、Delキーが押されているか判定して、
CB_GETCURSELでインデックスが取得できた。後は、削除すればいいな
>>902
>ここで言う「トラップ」ってのは、ソースコードに、普通使わないような書き方を忍び込ませて
>おく、ってことだ。変数名を変えたり、コードのコメントを削除したぐらいじゃ、すぐに見破ること
>ができる

回答するサンプルにトラップを入れておくとかはよくあるが、
他人のソースコード三昧のソースコードを自作のようにソース公開する馬鹿がいるのか?
それともコードの書き方からEXEファイルのバイトの並びまで予測できる?

>>900
単発のやつも数えるとそれなりにいると思われ。
906まとれす ◆mato./AI :02/04/12 01:03
>>905
>他人のソースコード三昧のソースコードを自作のようにソース公開する馬鹿がいるのか?
これは確実にいる。こういうと、被害者意識が強い、とか言われそうだがな。その話を聞いて、
実際に見てみると変数名を変えただけで、まんまパクリだった、ってことがある

とある有名サイトのソースコードが、海外サイトのパクリだったりな。まあ、これらの話は、完全に
クロと言える訳じゃないし、誰が、とか、どこのサイトが、ってのは止めておこう
907 :02/04/12 02:15
漏れもTipsソースを公開したりしてるけど、人マネや既存ネタは
痛いので滅多に見かけないものだけ載せたりしてる。だから、数
少ないよ。
見た目にぎやかにするために、コードサイトのパクろうとか考えた
こともあったがイタイので止めた(w
今は、極端にオフォらしいソースとか、イケナイ事だらけのソース
とかを公開しようかと思ってる(w

本のサンプルだが、「やっつけ仕事」なんが多いね。
あの手のは、一番初めに掲載するサンプルのネタだけ上げて、あとは
締め切りまでになんとか・・・・って感じのが多いのだろう。
だから、たまたまでも1回動作するばOKなんてレベルなのでは。

まぁ、本とか雑誌のサンプルをそのまま利用するのはDQNってのは昔から
言われてることだが。
908デフォルトの名無しさん:02/04/12 03:25
某VB有名人がMSDNのサンプルを1箇所だけいじって、著作権を
主張してたのには驚いた。自作かどうか忘れるものなのかなあ。
公開しなけりゃいいじゃんかw
ハイ オレはできますって BASICのコードでいばっててもな〜
そんなだから Perlスクリプトでシェア出すバカも許しちゃうんだよ
910デフォルトの名無しさん:02/04/12 04:34
>>908
晒しageきぼーん
911デフォルトの名無しさん:02/04/12 06:45
>>910
VB界でかなり貢献されてる人なので、それは出来ない。
っていうか、あれ誰も気づかないもんかなあ。
有名なサンプルなんだけど。
もしかしてMSDNサンプルの原作者だったりして。
>>911
>MSDNサンプルの原作者
それは無敵だな。
913ななし:02/04/12 08:48
>>911

> VB界でかなり貢献

イニシャルは、「矢」ですか?(W
914ななし:02/04/12 08:55
>>897

その記事を知らないので、具体的にどのあたりが問題なのか、かいつまんで
説明してもらえるとありがたいのですが。
(川俣氏の名は、『日経ソフ○ウ○ア』で数回見た記憶がある程度)

> VBがわかってないな。

いかにもありそうな話だとは思います。
別の人ですが、プログラミング言語に関して複数の著書を出しており、そこそこ名の通った
テクニカルライターの書いたVBユーザー向けのアルゴリズム本を見たら、サンプルコードの
ほとんど(全部?)に Option Explicit がなく、驚いた記憶があります。(藁
915すいません。かなり初心者です:02/04/12 08:57
>>898さん
ありがとうございました
何とかやってみます。
916ななし:02/04/12 09:17
>>914

自己補足。
「知らない」こと自体は別に恥ではない、というのが私の持論。
(全知全能の人間などいない)
まぁ、あまりにも基本的な素養が欠如してるのはどうかと思いますが・・・。

問題なのは、知らないくせに知ったかぶりする姿勢ですね。
特に、雑誌に記事を掲載したり、書籍を出すような立場の人間が、誤った
内容を断言口調で主張したりすると、社会的な(悪)影響が大きいだけに
タチが悪い。
知らない事は恥じゃないさ。だけど知ろうとしないのは恥。っつーか悪。
Withネストの中で、1つ前のWithを1回だけ参照する場合ってどうしてる?
With a
  With b
    With c
      .c1=0
      .c2=0
      ここでb.b1を参照したい。
    End With
  End With
End With

a.b.b1ってやるのはなんか嫌だ。でもそれしかないのかな。
919俺はWith使わない派:02/04/12 10:45
>>918
てかよっぽどでないとwith使わない。←たまに判りにくくなる
それにそんなにネスト深くしない。←判りにくくなる
処理速度に関しては不明。
920918:02/04/12 10:50
>>919
どうしてもWithつかったほうが分かりやすい時もあるんよ。
今やってるのはPSDファイルの読み込みだけど。

あのネストの深さは切れそうになるぐらいだ。
新しいフォーマットにしろよ、Adobe。
921デフォルトの名無しさん:02/04/12 10:51
今日授業でこれ習った
#include <stdio.h>
main()
{
printf("(゚Д゚) C!!\nH\ne\nl\nl\no\n \nPressAnyKeyToContinue\n");

}
922902:02/04/12 10:55
>>904
レスありがとうございます
コードを公開すると、パクリがばれるってことですよね
コンパイルしてしまったら大丈夫でしょうか?
ほかの方も参考になりました、ありがとうございます
>>920 そりゃ頑張れとしか言えないな(w

>>921 コンティニューしないだろ。
924ななし:02/04/12 11:44
>>918

単独のWithならよく使うけど、ネストはちょっと抵抗(違和感)がある。
With使わないとこんなんになるんよ。

Get FileNo,,PhotoShopFile.Layer.LayerStruct.LayerInfo(0).LayerMask.LayerMaskInfo.DefaultColor

こんなん何回も書いてられない。( ´Д`)
単発Withにするとかえってごちゃごちゃするし。

俺も普段はWithのネストはしない方なんだが・・・
926まとれす ◆mato./AI :02/04/12 12:09
>>913
それはイニシャルじゃないぞ

>>914
実際は読んでもらうとして、Debugの代わりにTraceを使ってるところとか、Option Strict
の導入に説明がないところとか、変な小技を使って最小値を作ってるところとかだな

VBは簡単、だから他の言語で記事が書ければ大丈夫、みたいな風潮があるんだろうな

>>918
どうしても、って言うんなら、

Set obj_ab = a.b
Set obj_abc = a.b.c
として、

With obj_abc
  .c1 = 0
  .c2 = 0
  obj_ab = 0
End With

だな。一時オブジェクトは、少しならいいんだが、多くすると追うのが大変なんで、あまり
使いたくないんだが

>>921
ほう、よかったな。しかし、ここはVBスレだ。VBで書き直すぐらいの努力はしろ。ちなみに、
そのコードには間違ってるところがあるぞ

>>922
コンパイルしたものをパクリだと判断するのはちょっと難しいだろう。だから大丈夫だと
思うぞ
質問おねがいしたいのですが
ステータスバーの文字の色を変える方法を教えてください。例えば赤色とか

sbStatusBar.Panels(1).Text = List1.ListCount

この中にプロパティを含めようと思ったのですが、colorなどのプロパティがありませんでした。
サクッとお願いします。
928918:02/04/12 12:35
>>926
むう。そう来たか。

んー、ありがとう。考えてみる。
929まとれす ◆mato./AI :02/04/12 12:35
>>927
ちょっと難しそうだな。オーナードローとかしてみるか?
>>927
そういや、ステータスバーの文字色変わってるのって見たこと無いやね。
931デフォルトの名無しさん:02/04/12 14:41
vb4.0 + SQLServer6.5のシステムがあって
こんどSQLServerを2000にする事になりました
VB4.0で作成したプログラムの方で不具合とかあるでしょうか?

初心者なのでものすごく漠然とした質問ですがよろしくお願いします
>931
最近SQL鯖6.0→2000へのアップやったよ。
SQL文のチェックが厳しくなっているからそのへん注意。
先頭が数字のフィールド名はカギカッコで括らんとイカンとか、細々と変わってる。

>931
あとBooksOnlineの「バージョンの互換性」とか読んどくとイイ。
934927:02/04/12 15:08
>>929>>930
レスありがとうございます。
オーナードロー、ちょっと調べてみます。
そうですか、プロパティか何かでサクッと簡単にできるものではないのですね
難しそうなのであきらめます。
簡単に変えられないことがわかったのでよかったです。

ありがとうございました。
935931:02/04/12 15:13
>>932
>>933
さっそくのレスありがとうございます

VB4.0とSQLSerever2000というのがなんとなくひっかかるんですが
問題ないでしょうか?
936まとれす ◆mato./AI :02/04/12 23:15
>>935
VB4だとRDOか? ODBCのバージョンとかには気をつけておいた方がいいな。最悪、SQLServer2000を
互換モードとかで動かすことを考えたほうがいいかもしれん

ANSI→Unicode変換とかも問題ないはずだし、それほどはまることはないだろう。って、32ビットだよな?
937デフォルトの名無しさん:02/04/12 23:48
>>913
さすがに名前はまずいので、ソートということだけ。


938デフォルトの名無しさん:02/04/13 00:53
Printer オブジェクトをつかって印刷してるのですが、
印刷する文字の色が変えられません。
Printer.ForeColor = RGB(192,192,192)
Printer.Print "テスト"
ってな感じなんですが、何が行けないのでしょうか。
つまり薄い灰色で印刷したいわけなんですが、
これだと真っ黒(RGB(0,0,0))状態で印刷されます。
939938:02/04/13 01:26
あ、このバグやったんか・・・。
http://support.microsoft.com/default.aspx?scid=kb;JA;q255115
940938:02/04/13 01:33
おお、うまくいった。
941デフォルトの名無しさん:02/04/13 06:54
フォルダだけを選択できるようにするコントロールってないですか?
DriveとDirを使って指定する方法しか思いつかないのですが・・・
質問なのですが
ListBoxの表示し切れなかったときに出てくる、スクロールバーを違うコントロールの
スクロールと同期させる(2つのコントロールが同じようにスクロールする)方法って
ありませんか?あるいはListボックス同士か

それに近い情報でもいいんでよろしくおねがいします。
943まとれす ◆mato./AI :02/04/13 13:05
ついに書き込みができなくなった。というわけで、ここから去ることにする。
いろいろあったが、みんな頑張ってくれ。さらば

>>941
SHBrowserForFolder()をキーに、サンプルを探してみろ
------
ここで依頼されました
http://mentai.2ch.net/test/read.cgi/accuse/1017213588/30-31
944 ◆mato./AI :02/04/13 13:44
@@@@
(゜д゜)<あらやだ!
945peng ◆9Pl8B3hA :02/04/13 14:23
うぷぷ
>>944
?

>>945
??
947バナナマン:02/04/13 15:45
ラーニングエディションを使っているのですが,アクティブXのコントロールの仲で
Microsoft Data Bound Grid Control 5.0(Sp3)をコンポ-ネントダイアログから表示
させたいんですが,ダイアログボックスの中にありません。
このコントロールを使うにはどうしたらよいのでしょうか?ちなみに参照も見ましたが
ありませんでした.
>>942
ListBoxのScrollイベントを調べて見れ。
949デフォルトの名無しさん:02/04/13 17:03
VBとVCにスレッド両方に書き込みましたが
「マルチポストうぜ〜」などと煽らずにマジレスしてください。

VBでファイルにバイナリアクセスする場合に
本にはバイト配列を使用して書き込むと書いてありましたが
どうやるんですか?
VCの場合はLONG型や浮動小数点型でもポインタを使って
バイト配列の一部にコピーしたりするのは簡単ですが
VBはポインタが無いのでどうやって変換して良いのか分かりません。
例えばLONG型(4バイト)と倍精度浮動小数点型(8バイト)を
12バイトの配列に格納する方法
逆に12バイトの配列からLONG型と倍精度浮動小数点型を抽出する方法教えてください。

950デフォルトの名無しさん:02/04/13 17:05
マルチポストうぜ〜
951デフォルトの名無しさん:02/04/13 17:31
>>941
まとれすの回答(APIのSHBrowserForFolder関数)以外には、
ShellオブジェクトのBrowseForFolderメソッド使うとかな。

.NETならFolderNameEditorクラスを継承したクラスを作って、
nitializeDialogメソッドをオーバーライドすればいい。
952942:02/04/13 18:16
>>948
レスありがとうございます
List1のスクロールイベントを発生させるところまでわかりましたが、
List2にはHscrollのValueにあたる、スクロール値のプロパティがありません。
これはどうしたものでしょうか?

どなたか、連動して動くスクロールバーの作り方を教えてください。
953デフォルトの名無しさん:02/04/13 18:50
C++ Builderにおいて、ディスクの空き容量を調べようと以下のようなコードを書いたところ、
「[C++ エラー] frmMain.cpp(51): E2015 '__stdcall GetDiskFreeSpaceEx(const char *,_ULARGE_INTEGER *,_ULARGE_INTEGER *,_ULARGE_INTEGER *)' と 'Sysutils::GetDiskFreeSpaceEx' の区別が曖昧」
といわれました、 このばあい、Sysutils::GetDiskFreeSpaceExを呼び出す方法はわかるのですが、
__stdcall GetDiskFreeSpaceEx(const char *,_ULARGE_INTEGER *,_ULARGE_INTEGER *,_ULARGE_INTEGER *)
を呼び出すにはどのようにすればよいのでしょうか?

よろしくお願いします。


void __fastcall TForm1::Button1Click(TObject *Sender)

{
// Show disk capacity and freespace
bool result;


ULARGE_INTEGER freespaceforcaller;
ULARGE_INTEGER capacity;
ULARGE_INTEGER freespace;




result=GetDiskFreeSpaceEx("C:\\",(ULARGE_INTEGER)&freespaceforcaller,
(ULARGE_INTEGER)&capacity,
(ULARGE_INTEGER)&freespace);
954953:02/04/13 18:51
スレ間違った。スマソ
955デフォルトの名無しさん:02/04/13 21:21
>>952
TopIndexやらNewIndexやら調べてみ。
956942:02/04/13 23:22
>>955
レスありがとうございます
TopIndexやらNewIndexやらを調べてみました。
これはスクロールバーに関係なく、クリックしてスクロールさせる作戦でしょうか?
これはこれで役に立ちそうですね

ありがとうございました。
VBは、ロータスノーツと相性が悪いのでしょうか?
958942:02/04/14 00:06
>>955
ああ、すいません、
List1.TopIndex = List2.TopIndex
にしたらスクロールしてうまいこといきました。
でも、LISTBOXのスクロールの速度が遅いので、もたついてしまいます
普通のすばやいスクロールにはできないのでしょうか?

ありがとうございました。
959バナナマン:02/04/14 00:32
ラーニングエディションを使っているのですが,アクティブXのコントロールの仲で
Microsoft Data Bound Grid Control 5.0(Sp3)をコンポ-ネントダイアログから表示
させたいんですが,ダイアログボックスの中にありません。
このコントロールを使うにはどうしたらよいのでしょうか?ちなみに参照も見ましたが
ありませんでした.

>「マルチポストうぜ〜」などと煽らずにマジレスしてください。
なんでマジレスせにゃあかんのだ?
誰もおめーのくだらねぇ質問に答える義務はねぇぞ?
そのへんわかってねぇから叩かれるんだろ?小学生じゃないなら気付や。

>VCの場合はLONG型や浮動小数点型でもポインタを使って
>略
>逆に12バイトの配列からLONG型と倍精度浮動小数点型を抽出する方法教えてください。
基本的にVBではそういうことをする必要がない。
っていうかしてはいけないような言語仕様なんだよ。
(あくまでもVBという言語の仕様な。理由は自分で考えろ)
どうしてもそういうことをしたいなら、
(1)ユーザ定義型(Cで言う所の構造体)を使う。
(2)RtlMoveMemoryとかのAPIを使って転送する。
の2点が普通。
(1)は配列とかがあるときは注意が必要。(やってみればわかる)
(2)はCライクな考え方でプログラムが書けるが、VBらしさを殺すことになる。(困らんがなw)
ポインタというものがどういうものなのか解っていれば
DLLにどうやってポインタを渡すのかはヘルプ見ればわかるだろう。

まぁ前半はこの時間まで仕事やってるもんの愚痴だ。気にするな。
961デフォルトの名無しさん:02/04/14 00:55
>>947
ラーニングには入ってないと思う。

>>949
LSETで出来ないかな。

962デフォルトの名無しさん:02/04/14 03:23
変数の名前の中で変数をつかうことってできないんですか?
できるとしたらどうしたらいいんでしょう?

とりあえず、
option explicit
public party as integer
public TOTO(party) as integer

とか適当にやってみたら、
定数式が必要とか返されちゃって、
また適当にparty = 5 とかかいてみた
(option explicit内では無理だから、private sub_Lordの中とか色々試してみた。)
んだけれども出来ませんでした。
963デフォルトの名無しさん:02/04/14 04:00
>>949
Hex関数で文字列化して2文字ずつ区切って、
それぞれに"&H"を付けてCByte関数をかませ。
戻すときはその逆。

>>962
動的配列を使いな。Redimをヘルプで調べてみ。
書き込みテスト
965964:02/04/14 04:37
すまん、しばらく書き込めなかったから、書き込めないと思ったのに、
書き込めてしまった・・・。
>>963
どうもです。みてみます。
>>962
Const
968デフォルトの名無しさん:02/04/14 08:43
VBでソフト作って公開しようと思ってますが、
FileSystemObjectを使っても支障はないですか?
(環境によって動かないとか…)
open や write などを使わないでFSOに統一したいのですが…
969デフォルトの名無しさん:02/04/14 08:53
便乗質問ですが、

FileSystemObjectってファイルを扱う必要が出たときに
イチイチCreateObjectで作っては破棄…って使うんですか?

それとも、プログラムの初めに
 Set fso = CreateObject("Scripting.FileSystemObject")
ってやって、あとはそれを使いまわすんですか?
970デフォルトの名無しさん:02/04/14 09:05
>>968
環境によって動かない。
Win95とかはWSH入れないとダメ。

>>969
両方可能。
971968:02/04/14 09:17
>>970
なるほど、たしかにWSHいれてナイト動くはずがないですね。
どうもありがとうございました。
972969:02/04/14 09:51
>>970
了解ありがとう
(ヨカッタ書き直す必要なくて…;−;
973MC303:02/04/14 11:58
Private Subって、日本語で言えばどういう意味になりますか?
サルでもわかるように教えて下さい。。
>>973
「その関数が置いてある所でしか使えない関数。戻り値は無いよ。」

サル相手ならこんな感じになるかなあ。
975バナナマン:02/04/14 12:34
アクティブXを呼び出す時にコンポネントダイアログを表示させた後に出てくる
一覧で、Microsoft Data Bound Grid Control 5.0(Sp3)と
Microsoft Datagrid Control 6.0 (OLEDB)の違いを教えてください.
あとVBでのデータベース処理を行う時に使うコントロールはどれですか?
976デフォルトの名無しさん:02/04/14 13:08
>975

MSDNより。
>データ グリッド コントロールの機能は、DB グリッド(DBGrid) コントロールに似ています。
>ただし、非連結モードをサポートしていない点が異なります。

ヘタにコントロールを使うよりも接続、操作に関する手順を一通り学んだ方が早い。
ここで単発で聞くよか、それ系のページや本のほうが流れが掴めると思うが。
ttp://www.google.co.jp/search?q=VB%82%C5%83f%81%5B%83%5E%83x%81%5B%83X&hl=ja&lr=
977デフォルトの名無しさん:02/04/14 15:45
どっちも全くやったことないのですが、
クラスとAPI、どっち勉強した方が良いでしょうか。
>>977
API
クラスとAPIどっちを・・って、
同列に考える物でもない気がする。
>>977
どっちかといえばクラス
981デフォルトの名無しさん:02/04/14 17:14
>>977

APIのラッパークラスをつくれば、両方同時に勉強できるかと・・・。
>>977
結論。どっちもやれ。
983デフォルトの名無しさん:02/04/14 17:35
>>977
くどいようだが、目の前にあるものは全部片付けろ。
984名無し:02/04/14 19:25
質問です。
VBを覚えるのに一番おすすめの本はありますか?
ネットよりも本の方が使いやすいと聞いたのですが…
985_:02/04/14 19:39
>>984
一番おすすめと言われても困るかもしれん。
どれが一番ってのは言いにくいし、個人的に好みあるだろうし。
俺が最初にやったのは「初めてのVisual Basic」みたいな本だった。
出版社とか覚えてねぇわ。全然答えになってなくてスマソ。

漏れも質問いい?
VBでIP調べる方法があった(現に昔使った)んだけど
どうやるんだっけ?簡単だったような気がするんだけどど忘れ・・・
>>985
VBでIP調べる方法

VBとは言えお前もプログラマなら専門用語くらい正しく使え。
>>984
ネットは何かを調べるのには便利だけど勉強するのは難しいだろうな。
きちんと分かりやすくまとめられているのは少ない。
ただ、本の方が言いかと言うと・・・良質な本は少なげ、特にVBは。

ちなみに一番いい情報源はMSDNライブラリ。
なれないうちは苦労すると思うけど付属しているヘルプぐらい
見れないようではプログラマ失格。
>>984
MSのStep By Stepでも買ったら?

>984
Excelを自動化したい、データベースを使いたい、ゲームを作りたい...
目的がハッキリすりゃ、それっぽいサイトや本も見つかる。
逆にいえば、ある程度目的を決めないとナニをやっても無駄。
990985:02/04/14 22:19
スマヌ>>986

「VBで自分のIPアドレスを取得する方法」
これでどうですかね?
>>985
winsockcontrolwoharitukeru
992985:02/04/14 22:27
>>991
どうも〜!
winsockコントロール、ですか。
そんなんだったような気もしないでも無いw
やってみま。
993名無し:02/04/14 22:51
>>985,987,988,989様ありがとうございます〜。
目的はゲームを作ってみることです…
とりあえずテトリスかぶろっく崩しから…、
もちろんちゃんと勉強しながらやるつもりです。
では…
皆様にも幸あらんことを

127.0.0.1
996
o
p
今だ!999ゲットオォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
質問なのですが、、、
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。