トップページ⇒tech
1001コメント345KB

VBプログラマ質問スレ(6.0以前) Part34

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
VB(6.0以前)の質問スレです。
VB.NETの話題はできるだけひかえてください。

前スレはこちら
  Part25 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
  Part26 http://pc5.2ch.net/tech/kako/1055/10551/1055145106.html
  Part27 http://pc5.2ch.net/tech/kako/1058/10586/1058674927.html
  Part28 http://pc5.2ch.net/tech/kako/1061/10612/1061296197.html
  Part29 http://pc5.2ch.net/tech/kako/1065/10654/1065446334.html
  Part30 http://pc5.2ch.net/test/read.cgi/tech/1069160036/
  Part31 http://pc5.2ch.net/test/read.cgi/tech/1073732636/
  Part32 http://pc5.2ch.net/test/read.cgi/tech/1077216109/
  Part33 http://pc5.2ch.net/test/read.cgi/tech/1080606445/

Visual Studio 6.0 Service Pack 6 正式リリース
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx

【VB.net関連スレ】VB.net質問スレ (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1078134703/

【Win32 API関連スレ】Win32API質問箱 Build18
http://pc5.2ch.net/test/read.cgi/tech/1081702990/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.荒らしは相手しない。
六. VB情報募集中。
七.VB.NETの話題できるだけひかえる。
0951948NGNG
事故レス

コードの書き方が間違ってました・・
947さん助言サンクスです。
0952デフォルトの名無しさんNGNG
>>949
配布がDLLであること。
参照するオブジェクト名が同一であること。

上記を考えると、別バージョンのOO4Oを別認識できないように思える。
だもんで、対応はできないと思う。
0953デフォルトの名無しさんNGNG
ビットマップの角度を自由に変更したい時GetPixel・SetPixelV以外を使う方法は
ないでしょうか?
>ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200104_01040009.html
こちらのページのサンプルを利用して実際にやってみたのですが、かなりスロー
でした。できればもっと高速にしたいのですが。
ページの下の方にGetDIBits/SetDIBitsを使うと高速になるとあるのですが、
こちらを使ったサンプルが見れるようなサイトを教えてもらえるとありがたい
です
0954デフォルトの名無しさんNGNG
>>953
サンプルもいいけど自分でAPIをいじられるように
勉強した方がいいんじゃないのか?
0955デフォルトの名無しさんNGNG
画像は正しい知識がないと危険だからね。
APIにしてもきちんと扱えないとリークしまくりのソースが完成するし。

下手なAPIよりは、条件が許すならばコントロール買ったほうが早いし安全。
0956デフォルトの名無しさんNGNG
>>952
やっぱりですか(´・ω・`)
くまった。
0957デフォルトの名無しさんNGNG
File=1234
DATA=123,111,1234,22222,3212

というテキストファイルからDATAの部分だけ抜き出して

123
111
1234
22222
3212

のように出力したいのですが、どうしたらよいでしょうか。
1byteずつ読み込む方法も考えたのですが、DATAの部分がかなり多く
処理に困っています。どうかご教授ください。
0958デフォルトの名無しさんNGNG
>957
「DATA=」以降をMidで切り出して
「,」でSplitして配列化して
あとはFor〜To〜Nextで回して出力しろ。
0959デフォルトの名無しさんNGNG
>>958
DATA=の切り出しもSplit(Limit:=1)でいけるで。
0960デフォルトの名無しさんNGNG
ディストリビューションウィザードで
ActiveXのcabファイルを作ったのですが、
実行しても追加したファイルをPCにコピーができません。
infの編集が必要なのでしょうか?
0961はちみつ三郎改めはちみつ六郎NGNG
>>918
ありがとうございます、いけました!!
TabStopってばらばらにも設定できるってことですねー。

0962デフォルトの名無しさんNGNG
先生方、質問です。
今 PictureBox に Clibboard.GetData で時間によって変化するBMPが表示されています。
やりたい事はこの画像の「指定ピクセルのRGB値の一定時間毎の取得」です。

APIのGetPixel、あるいはPicture1.Point(X,Y)でRGB値の取得はできるのですが、
これは画像が画面上に表示されてる時のみ有効な様なのですが、そんなものなのでしょうか?
つまり他のダイアログで当該画像を見えなくすると、有効な値が得られないのです。

これでは上記「一定時間毎」の条件を満たすのが困難です。
プログラム動作中に他の作業もやりたいので、画像は隠れているのが前提ですし、
取得の度に最前面に画像をもってくると、その度に他の作業の邪魔になります。

これを解決する良い手立てはありますでしょうか?
一定時間毎に画像を保存し、ファイルを直接解析するのが良いかもと思いましたが、
BMPの解析をどう実装したらいいのか見当がつきませぬ。

何卒お知恵を貸して下さいませ・・・
0963デフォルトの名無しさんNGNG
>>962
おーとりどろーはTrue?
0964962NGNG
>>963
お返事ありがとうございます。
御助言に従いまして、AutoRedrawをTrue(Falseでした)にしたところ、

・・・何ということでしょう!隠れたPictureBoxのpixelのRGB値が取得できるではありませんか!

先生、本当に感謝です。ありがとうございました!
そして私の勉強不足を痛感致しました。今後精進致します。
0965教えて!!NGNG
----VB側の宣言-----------------------------------------------------------
Public Declare Sub ReadBinData Lib "VBDLL.dll" (ByRef PathName As String)
----VB側-----------------------------------------------------------------
Call ReadBinData(PathName)
----VC側-----------------------------------------------------------------
int ReadBinData(char file_name[])
----.def-----------------------------------------------------------------
EXPORTS
ReadBinData@1
-------------------------------------------------------------------------
VC側というのは、.cppではなく.cで作成したものです。
VB側からVCの関数を呼び出す際に、ファイル名などを上記のように送ると、
エラーが出てしまいます。引数を無くすと上手くいきました。
何か、いいサンプルやアドバイスがありましたら、どなたか、教えてください。
0966デフォルトの名無しさんNGNG
エラーはどのレベルで出るのでしょうか?
VC側をデバッカ起動して張ってみれば?
0967デフォルトの名無しさんNGNG
>>965
VB側を
Byval PathName As String

VC側を
int _stdcall ReadBinData(char *file_name)

こんな感じだった気がするけどよく思い出せない。
0968デフォルトの名無しさんNGNG
初心者で申し訳ない。バイナリ読み出しに関する質問です。

get文でバイナリファイルからintegerで読み出しました。
2バイトずつ読んでると思います。
ところが出力を見ると「00×01」を格納された値が1ではなく256になっています。
つまり、「00×01」を「01×00」と読んでいるわけです。

vbではbyte単位で読んで、自分でひっくり返すしかないのでしょうか
自分の読み方が何かおかしいのでしょうか?
コードは以下のとおりです。

dim n as Long
dim a() as integer
dim fl as string

fl="c:\temp\test.a"
Open fl For Binary As #1

Do Until EOF(1)
n = n + 1
Get #1, , a(n)
Loop
close #1

fl="c:\temp\test_res.a"
Open fl For Output As #1

 For i=1 to n
Write #1,a(i)
Next i
close #1
0969デフォルトの名無しさんNGNG
>>968
リトルエンディアンとビッグエンディアンでググってみると何かヒントがあるかもしれない。
0970教えて!!NGNG
早速の返信ありがとうございます。
デバッグではVC側に入れまして、
file_nameに確かにVBで指定したファイル名が入っているのですが、
ファイルポインタfpに値が入らず、エラー終了してします。
VB側の呼び出し方は
Call ReadBinData(PathName)
でよろしいのですか?
バイナリファイルのオープンが上手くいきません。
fpに値が入らないのです。
デバックも実行時のエラーもありません。

int ReadBinData(char file_name[])
FILE*fp;
if((fp = fopen(file_name,"rb")) == NULL )
{
//printf( "InFile Open Errer!\n" );
return -1;
}
ここで、ファイルオープンエラーになり終了してします。
0971968NGNG
>>969
サンクス、即ググル。ありがトン
0972デフォルトの名無しさんNGNG
>>970
VB側の文字列を固定長にしたらどうでしょうか?
あと、VCに渡った文字列はNULL止めされてますか?

文字列の受け渡しはMSDNの中に記述があったはずなので、それを参照してみては?
0973968NGNG
968の続きで再び質問なんですが、MAC並びのバイナリをintelマシンの
vbで読み出すことになるわけですが、どうやるんでしょうか?

試しにOpenコマンドの最後にLen節をつけてLen=2を追加してみたのですが、
相変わらずです。こういうことじゃないんでしょうか?

スンマセンがお願いします。
0974デフォルトの名無しさんNGNG
>>973
htons htonl ntohs ntohl などがあるが、自力で変換するのもいいと思う
0975デフォルトの名無しさんNGNG
VBのGetステートメントでInteger型を読み出そうとするとどうしてもリトルエンディアンで読んでしまいます。
これをビッグエンディアンで読み出す場合は、Byte型の変数を2つ用意し、

(略)
Dim B(0 to 1) as Byte

(略)
Get #1, , B(0)
If (Not EOF(1)) Then
Get #1, , B(1)
a(n) = CInt("&H" & Right("0" & Hex(B(0)), 2) & Right("0" & Hex(B(1)), 2))
(略)
End If
(略)

というようにすればByte型(0〜255)とInteger型(-32768〜32767)の符号関係も考える事なく読み込む事ができます。
0976デフォルトの名無しさんNGNG
>>975
たしかにそうなんだけど、ファイルがでかいとすごく重そうだナ
直接MoveMemなどでやりたい所だ
0977975NGNG
>>976
それはその通り。
オレは関数の説明とかするのが嫌いな面倒くさがりなだけ。
0978968NGNG
>>974-976 皆さん、コードまで書いてくれてありがトン

調べられることは、とことん調べます。

で、MoveMemってAPIかと思ってMSDNで引いたのですが出てきません。
書式なんかは検索すりゃ分かるとして、これはそもそも何なんでしょう?
(今回、カナーリ教えて君で申し訳ない)
0979デフォルトの名無しさんNGNG
>>978
出てこないというのはヘンだが
ttp://homepage1.nifty.com/MADIA/vb/API/MoveMemory.htm
0980968NGNG
>>979
やはりAPIだったか。サンクス。
このページは自分もお気にに入れてるっす。

おかげで今日一日ケコーウ勉強になった。
0981デフォルトの名無しさんNGNG
うーん、これぐらいのことでAPI使う必要あるかなあ。
>>975は論外として、VBの機能だけでやるとしたらこんな感じか?

If B(0) And &H80 = 0 Then
I = B(0) * 256 + B(1)
Else
I = ((B(0) And &H7F) * 256 + B(1)) Or &H8000
End If
0982デフォルトの名無しさんNGNG
>>968
>>975
>>981
((B(0) And &H7F) * &H100 + B(1)) Or CInt((B(0) And &h80) = &H80) and &H8000
0983デフォルトの名無しさんNGNG
質問です。
テキストボックスに入りきらない長さの文字列を
自動でスクロールさせて表示させたいのですが、
VBにはそういう機能ってあるんでしょうか?
0984デフォルトの名無しさんNGNG
ない
0985デフォルトの名無しさんNGNG
ないんですか・・・

地道にタイマーで文字列切り貼りして頑張ります。
ありがとうございました。
0986デフォルトの名無しさんNGNG
ちうか、なぜテキストボックスの文字列をスクロール
表示させたいんだろう?

何をしたくてスクロールに行き着いたのかが非常に
興味ある今日この頃。
0987デフォルトの名無しさんNGNG
>>986
アンカー使って文字が流れまくるトホホなウェブサイトみたいなことしたいんでしょ。
わたしゃ、そんな糞アプリ速攻でアンインストールするけど。
0988デフォルトの名無しさんNGNG
おっと、アンカーじゃなくてマーキーだね。失礼。
0989デフォルトの名無しさんNGNG
ラベルはどのように宣言すればいいのですか?
0990デフォルトの名無しさんNGNG
HTMLメールの内容(画像付き)を表示したいのだけど、
WebBrowserとかのコントロールで表示すること出来ますか?
メールの送受信は出来たけど、受信したのを開くことが出来ないっす。
HTML形式に変換とかしないといけないのかな?

0991デフォルトの名無しさんNGNG
>>986
電光掲示板みたいなアプリ作ってるんですが、
HTMLのトホホなウェブサイトみたいに楽にできないかなぁと(汗
それだけです。すいません。
0992デフォルトの名無しさんNGNG
そろそろ次スレたててくれ
と他力本願してみるテスト
0993デフォルトの名無しさんNGNG
>>991
PictureBox1 の中に PictureBox2 を作成し、PictureBox2 の枠を消して、
PictureBox2 に文字を書いて、PictureBox2.Leftプロパティ か PictureBox2.Topプロパティ でスクロールさせろ。
0994デフォルトの名無しさんNGNG
新スレ

VBプログラマ質問スレ(6.0以前) Part 35
http://pc5.2ch.net/test/read.cgi/tech/1087519251/
0995デフォルトの名無しさんNGNG
>>991
Web Browser コントロール使う。
0996デフォルトの名無しさんNGNG
うめーーーっシュ
0997デフォルトの名無しさんNGNG
うめ うめこです。
0998968NGNG
>>981-982 サーンクス

礼しか言うこと無くて申し訳ないが、
どうせ埋めるだけならお礼だけでも言っとく
0999デフォルトの名無しさんNGNG
imada
1000デフォルトの名無しさんNGNG
1000ゲット
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。