私のおもちゃ箱-プログラミングテキスト


プログラミング何でも掲示板(過去分)
私のおもちゃ箱
 −−プログラミングテキスト−−
<> フローチャート
<> ハードウェア
<> C言語 (C language)
<> Visual Basic 2005
<> Visual Basic 6.0
<> COMETU & CASLU
<> JavaScript
<> HSP 3.0
<> Windows Xp
  Word2000, Excel2000,PowerPoint2002
<> ホームページ作成

過去ログ
メニューに戻る



質問していいですか??  初心者です。 - 2007/05/13(Sun) 23:50 No.153

最近プログラミングの勉強はじめて宿題が出たんですけど‥‥‥

分からないことだらけで誰か教えてくれませんか??

1.(\t, %, %%の意味は??)

2.int変数(a,b,c)で2/3を、またdouble変数(x,y,z)で2.0/3.0を計算して出力し、結果の相違について考察しなさい

3.C言語の定数について調べなさい

4.printfにおける%13.10fはどういう意味か??

何ですけど‥‥‥まぢでわかんないんでわかる人おねがいします。

Re: 質問していいですか??  hiroshi - 2007/05/16(Wed) 01:10 No.154

ようこそ、初心者です。さん
「宿題」と言うことなのでどうしようかと思ったのですが。C言語の説明をしたページは山ほどありますので、検索サイト
で調べるといいと思います。
1.\tは「エスケープ文字」、%は「演算子」、%%は「書式指定子」と「C言語」で調べてみてください。
2.プログラムを作成してみましょう。(空白は全角です。)
#include <stdio.h>
int main(void)
{
  int a = 2, b = 3, c;
  double x = 2.0, y = 3.0, z;
  c = a / b;
  z = x / y;
  printf("c=%d\nz=%f\n", c, z);
  return 0;
}
3.「C言語」と「定数」で検索してみましょう。
4.「C言語」と「書式指定子」で検索してみましょう。または、2.のリストのprintf関数のz=%fの%fを「%13.10f」、
「%13.9f」、「%13.8f」など値を変更して結果を見てみましょう。
以上、解答にはなっていませんがテキストを読み返したり、ネットで調べて見てください。
それでは、またいつでもどうぞ。


依存ファイルって何?  ちゃんボケ - 2007/04/25(Wed) 18:30 No.150

教えて下さい。
セットアップウィザードにて配付ファイルを作成しています。
その時に依存ファイルが古いとか、依存ファイルが無いとか表示されますが、依存ファイルって何ですか?
Systemディレクトリを調べて見ると、DEP拡張子の物がそうらしですが、これは誰がつくるものなのでしょうか?
教えて下さい。

Re: 依存ファイルって何?  hiroshi - 2007/04/28(Sat) 18:23 No.151

ようこそ、ちゃんボケ さん
依存ファイルとは、作成したプログラムが実行するために必要なファイルのことです。
例えば、ゲームをインストールするとプログラム(EXEファイル)だけでなく、音や画像などのデータファイルや
汎用性の高いプログラムを部品化したDLLファイルなどたくさんのファイルがインストールされますよね。
依存ファイルとは、これらのファイルのことです。
依存関係はウィザードが作成してくれるので、VBなどの開発環境で実行できれば大丈夫だと思います。
VB6のディストリビューションウィザードしか使ったことがないのですが、DLLなどは自動的にリストアップしてくれます。
データファイルなどは自分で追加する必要がありますが・・・
MSDN(マイクロソフトのサイト)で「officeの依存ファイル作成」というページがありました。言語関係の分もどこかに
あると思います。とりあえず、参考までにURLは次の通りです。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/odecore/html/deconcreatingdependencyfiles.asp
答えになったかどうかわかりませんが、またどうぞ。

Re: 依存ファイルって何?  hiroshi - 2007/04/28(Sat) 18:26 No.152

訂正
依存ファイルとは、これらのファイルのことです。
 ↓
依存ファイルとは、依存するファイル群の情報が記述されたファイルです。


3Dってどうやってつくるの?  3D - 2007/04/21(Sat) 14:59 No.147

3Dってどうやってつくるの?
よくわからないー

Re: 3Dってどうやってつく...  3D - 2007/04/21(Sat) 15:58 No.148

あれ?管理人さんは?

Re: 3Dってどうやってつく...  hiroshi - 2007/04/22(Sun) 11:15 No.149

ようこそ、3D さん
e-Wordsで調べると3Dとは、つぎのようにせつめいされています。
空間や立体など三次元の存在を、画面に投影して描画した画像や映像のことです。
空間上の点と、それをつなぐ線や面を数値で表し、計算によって物体の位置や形状を決定、描画する手法が一般的です。
さらに、光源の種類や位置、表面の質感などを考慮して描画することによって、より現実味を帯びた表現が行えるようになります。
ご質問についてですが、立体物を作るのか、空間を作るのか、基本的な原理は同じでしょうが、対象によって方法は
違ってくると思います。
例えば、飛行機を作るなら3DCG作成ソフトで作成して、その画像をプログラムで取り込んで、プログラムで作った3D空間に
表示する(飛ばす)という方法が考えられます。まさか、立体物である飛行機からプログラムで作ることはしないと思います。
今、よく使っているHSPではHGIMG3を使ったサンプルもたくさんありますので、参考にしてみるのもいいかと思います。
それでは、またいつでもどうぞ。


多重起動回数カウント  ちゃんボケ - 2007/04/13(Fri) 15:37 No.142

初めまして。VBにてアクセスDBを利用したLAN経由のデータベース処理ソフトを作っていますが、ソフトは多重起動を可能としています。
その際、現在いくつの端末で起動しているかを知りたいのですが、取得する方法はあるのでしょうか?
よろしくお願い致します。

Re: 多重起動回数カウント  hiroshi - 2007/04/15(Sun) 00:08 No.144

ようこそ、ちゃんボケ さん
Webページのカウンタと同じような処理を組み込めば可能だと思います。各端末からアクセスできるファイル(Aとします)
を用意して、ソフト起動時にAのデータを読み込み、1加算してからまたAに書き込みます。これで、Aの内容を見れば起動して
いる数がわかります。また、ソフト終了時には1減算して書き込む処理を入れておきます。
正確に数をカウントするには、1つのファイル(A)に同時にアクセスできないように仕組みが必要です。OPEN命令のヘルプなど
を参照してみてください。
もう一つ、考えられる方法は、DBに起動数をカウントする表を用意しておいて、起動数をDBに記録すればどうでしょうか。
それでは、またいつでもどうぞ。

Re: 多重起動回数カウント  ちゃんボケ - 2007/04/19(Thu) 16:43 No.146

親切なご指導ありがとうございました。
同時書き込みは、少し苦労しましたが、解決できました。
どうもありがとうございました。

HSPの画像の表示について  はてな - 2007/04/14(Sat) 09:56 No.143

初めまして。
突然ですが、HSPで画像を表示させることができません。
色々なサイトを回ってみても
どれも画像ファイルがありません。と表示されます。
プログラム自体は
コピペしても出来ないのであってると思うんですが、
ファイルの保存場所が何か問題あるんでしょうか。

Re: HSPの画像の表示について  hiroshi - 2007/04/15(Sun) 00:18 No.145

ようこそ、はてな さん
状況がよくわからないのですが、
> 画像ファイルがありません。と表示されます。
ということですからメッセージ通りなのでしょう。
プログラムのファイルと画像ファイルが同じフォルダ内にあるか確認してください。
よろしければ、次のサイトの「プログラミングの基礎V、(2)画像表示」をご覧下さい。
http://masudahp.web.fc2.com/hsp30/kiso/index.html
それでは、またいつでもどうぞ。

HSPについて質問させて頂きます  緑茶 - 2007/03/07(Wed) 17:29 No.139

初めまして。現在HSPで自機を上下左右に動かして、弾を避けるというゲームを作っているのですが、弾に当った後スペースキーを押してリトライするようにしたところ、10回目でネストが深すぎるとのエラーメッセージが出るようになってしまいました。原因がわからないため、もしよろしければご指南いただけないでしょうか。よろしくお願いします。
以下がスクリプトの全文です。長々しくて申し訳ありません。

randomize
title "ESCAPE!!"
mmload "sound/burst.wav",0

exist "highscore.dat"
if strsize=-1 {
phs=0
bsave "highscore.dat",phs
} else : bload "highscore.dat",phs

buffer 3
picload "graphic/shootip.bmp"
buffer 4
picload "graphic/back.jpg"

sc=0 ;スコア
hs=0 ;ハイスコア
mx=304 ;自機のX座標
my=400 ;自機のY座標
enum=30 ;弾の数
dim ex,enum ;弾のX座標
dim ey,enum ;弾のY座標
dim emd,enum ;弾の移動パターン
dim esp,enum ;弾の移動速度
dim etipx,enum ;弾の種類
repeat enum
ex(cnt)=rnd(560)+40
ey(cnt)=rnd(200)+40
emd(cnt)=rnd(4)
esp(cnt)=rnd(3)+1
if esp(cnt)=1 : etipx(cnt)=5
if esp(cnt)=2 : etipx(cnt)=6
if esp(cnt)=3 : etipx(cnt)=7
loop

gsel 0
*MAIN
repeat
redraw 0
gosub *MAPDRAW
gosub *MYUNITSET
gosub *KEYCHECK
gosub *ENEMYSET
gosub *SCOREGET
gosub *ATAHAN
redraw 1
await 5
loop
*MAPDRAW
gmode 0,640,480
pos 0,0
gcopy 4,0,0,640,480
return
*MYUNITSET
pmx=mx : pmy=my ;移動前の位置を記録
pos mx,my
gmode 2,32,32
gcopy 3,0,0,32,32
return
*KEYCHECK
stick key,15
if key&1 : mx=mx-8
if key&4 : mx=mx+8
if key&2 : my=my-8
if key&8 : my=my+8

if mx<0|mx>608 : mx=pmx
if my<0|my>448 : my=pmy
return
*ENEMYSET
repeat enum ;エラーダイアログによると、この部分に問題があるそうです。
pos ex(cnt),ey(cnt)
gcopy 3,etipx(cnt)*32,0,32,32
if emd(cnt)=0 : a=esp(cnt) : b=esp(cnt)
if emd(cnt)=1 : a=esp(cnt) : b=-esp(cnt)
if emd(cnt)=2 : a=-esp(cnt) : b=esp(cnt)
if emd(cnt)=3 : a=-esp(cnt) : b=-esp(cnt)
ex(cnt)+=a : ey(cnt)+=b

if ex(cnt)<-8 {
if emd(cnt)=2 : emd(cnt)=0
if emd(cnt)=3 : emd(cnt)=1
}
if ex(cnt)>616 {
if emd(cnt)=0 : emd(cnt)=2
if emd(cnt)=1 : emd(cnt)=3
}
if ey(cnt)<-8 {
if emd(cnt)=1 : emd(cnt)=0
if emd(cnt)=3 : emd(cnt)=2
}
if ey(cnt)>456 {
if emd(cnt)=0 : emd(cnt)=1
if emd(cnt)=2 : emd(cnt)=3
}
loop
return
*SCOREGET
sc++
pos 10,430
color 255,255,255
font "MSゴシック",30,16
mes "SCORE="+sc
return
*ATAHAN
repeat enum
if abs(mx-ex(cnt))<16 & abs(my-ey(cnt))<16 { 
pos mx,my
mmplay 0
gcopy 3,128,0,32,32
redraw 1
goto *OWARI
}
loop
return
*OWARI
hs=sc
if hs>phs : bsave "highscore.dat",hs
bload "highscore.dat",phs
pos 200,430
font "MSゴシック",30,16
color 255,255,255
mes "これまでのHigh Score="+phs
pos 160,70
repeat
getkey key1,27
getkey key2,32
if key1=1 : end
if key2=1 {
sc=0
mx=304
my=400
repeat enum
ex(cnt)=rnd(560)+40
ey(cnt)=rnd(200)+40
emd(cnt)=rnd(4)
loop
goto *MAIN
}
await 5
loop

Re: HSPについて質問させ・..  hiroshi - 2007/03/09(Fri) 04:40 No.140

ようこそ、緑茶さん
gosubで移動するとき、returnで「戻る場所」を記憶します。returnでは記憶しておいた「戻る場所」を
取り出して戻り、「戻る場所」はクリアされます。
リストでは、gosubで*ATAHANへ移動して、gotoで*MAINに戻っているため、「戻る場所」がたまりすぎて
エラーになっていると考えられます。
gosubで移動したときは必ずreturnで戻るようにします。
同じように、repeatとloopでも「戻る場所」を記憶します。gosubとrepeatが同じ領域で「戻る場所」を
管理しているかどうかは不明ですが、ループからgotoで抜け出すのも問題があります。
ループから抜け出すときは必ずbreakを使うようにします。
そこで対処ですが、次のようにすればいけると思います。(インデントは全角空白です。ご注意を!!)
*ATAHAN
  repeat enum
    if abs(mx-ex(cnt))<16 & abs(my-ey(cnt))<16 { 
      pos mx,my
      mmplay 0
      gcopy 3,128,0,32,32
      redraw 1
      gosub *OWARI ;←変更(元goto *OWARI)
      break ;追加(ループを抜ける)
    }
  loop
  return ;ここでMAINに戻る。
*OWARI
  hs=sc
  if hs>phs : bsave "highscore.dat",hs
  bload "highscore.dat",phs
  pos 200,430
  font "MSゴシック",30,16
  color 255,255,255
  mes "これまでのHigh Score="+phs
  pos 160,70
  repeat
    getkey key1,27
    getkey key2,32
    if key1=1 : end
    if key2=1 {
      sc=0
      mx=304
      my=400
      repeat enum
        ex(cnt)=rnd(560)+40
        ey(cnt)=rnd(200)+40
        emd(cnt)=rnd(4)
      loop
      break ;変更(元goto *MAIN)ループを抜ける
    }
    await 5
  loop
  return ;ここでATAHANに戻る。
以上です。実行していないので不具合があるかもしれませんが、一度試してみてください。
それでは、またいつでもどうぞ。

Re: HSPについて質問させ・..  緑茶 - 2007/03/12(Mon) 13:06 No.141

>>hiroshiさん

丁寧なご指導ありがとうございます。無事にエラーを無くすことができました。

gosub〜return命令の役割をよく理解していなかったようです。「戻る場所」を記憶し、クリアするという、自分のような者でもわかりやすいご説明でした。またこちらで質問をさせていただくことがあるかもしれませんが、よろしくお願いします。

それでは失礼します。どうもありがとうございました。

質問です.VB6でacos  osa - 2006/12/07(Thu) 13:38 No.136

VB6でacos(アークコサイン)を計算したいのですが,acosの関数がありません.近似式などで試してみたのですが,微妙にずれてしまいます.なにか良い解決方法はありませんか?
お願いします.

Re: 質問です.  hiroshi - 2006/12/09(Sat) 12:52 No.137

ようこそ、osaさん
もともとsinやcosも近似式で計算されていますし、パイの値自体が近似ですし、「微妙なずれ」は仕方ないものと思います。
一つ考えられるとしたら、別の言語やExcelなどでacosの値の表を作ってテキストで保存して、vbで読み込んで求める方法
が考えられます。
あるいは、Excel + VBAで作るのも一つの方法かもしれませんね。
全然解決にはなっていませんが、よろしければまたどうぞ。

Re: 質問です.  osa - 2006/12/11(Mon) 13:24 No.138

そうですよね.
やっぱり微妙なずれはしょうがないですよね.
いろいろ試してみます.
ありがとうございました.

Re: たびたびすいません.MouseDownの(VB6)  hiroshi - 2006/10/27(Fri) 03:48 No.133

ようこそ、osaさん
まず、MouseDownのたびにICが初期化(=0)されるので、XP(IC)=Xは
あまり意味がないですね。

では、質問1と2です。次のようにします。
Text1.Text = Text1.Text & VbCrLf & XP(IC)-X_ZERO & " " & YP(IC)-Y_ZERO
Text1.Textに前回までの値が入っているので、Text1.Textの内容に
次の座標データを連結するようにします。
Text1.Textの次のVbCrLfは改行を表します。
XとYの間にスペースを入れるのは、" "(空白)を連結するだけです。
以上ですが、どうでしょうか。

ちなみに、座標データをText1と配列XP, YPにも保存しようとしているのでしょうが
ICの値が変わらないのでいつもXP(0)とYP(0)に格納されまし、モジュールがEnd Subで
終了するとモジュール内で宣言した変数・配列は破棄されます。
そこで、IC,XP,YPをモジュールの外側で宣言します。
Dim IC As Single
Dim XP(5000) As Single, YP(5000) As Single
Private Sub Form_MouseDown( …

もう一つ、Dim XP(5000), YP(5000) As Single では、YPはSingle型ですが、
XPはSingle型にはなりませんのでご注意を!!
また、IC=IC+1も忘れないように!!
それでは、またいつでもどうぞ。

ありがとうございました.  osa - 2006/10/27(Fri) 12:53 No.134

教えていただいた方法で,問題は解決したした.
ほんとうにありがとうございました.
まだまだVB6についての勉強が足りないようなので
これから頑張って勉強したいと思います.
また問題が起きた時にはよろしくお願いします.

失敗です  hiroshi - 2006/11/02(Thu) 07:43 No.135

質問を消してしまいました。すみません。

質問です.グラフィックメソッドのLineメソッド(VB6)  osa - 2006/09/27(Wed) 16:20 No.127

はじめまして.VBを今年度からはじめた初心者です.
ちょっと悩んでいるので,質問させていただきます.

質問
グラフィックメソッドのLineメソッドを利用して,
Line (2000,1000)-(3000,1500)
Line (2000,1500)-(3000,1000)
という二本の線を引いたとします.
行いたいことは,これらの二本の直線の交点の取得です.
マウスの座標を取得することによって,交点を取得することは
できるのですが,そのような操作をしないで取得したいと
考えています.
そのようなことは可能ですか?

説明がわかりにくいかもしれないですが,よろしくお願いします.

Re: 質問です.  hiroshi - 2006/10/03(Tue) 00:42 No.128

ようこそ、osaさん
最近チェックを怠っていまして、遅くなりましたが・・・
直線の式はy=a*x+bですよね。2点の座標から傾きaと切片bを
求めれば、2つの直線の式がそれぞれ求められます。
あと、yが等しくなるxを求めて、そのxを元にyを求めれば
交点の座標が求まります。

rem 直線の座標
x11 = 200.0 : y11 = 100.0 : x12 = 300.0 : y12 = 150.0
x21 = 200.0 : y21 = 150.0 : x22 = 300.0 : y22 = 100.0
rem 傾きと切片
a1 = (y11 - y12) / (x11 - x12) : b1 = y11 - a1 * x11
a2 = (y21 - y22) / (x21 - x22) : b2 = y21 - a2 * x21
rem メモ:式の変形
rem a1*x+b1 = a2*x+b2
rem a1*x-a2*x = b2-b1
rem (a1-a2)*x = b2-b1
rem x = (b2-b1)/(a1-a2)
rem 交点の座標
x = (b2 - b1) / (a1 - a2)
y = a1 * x + b1 rem y = a2 * x + b2でもok

計算するとx=250、y=125です。
それでは、またいつでもどうぞ。

Re: 質問です.  osa - 2006/10/05(Thu) 11:16 No.130

ありがとうございました.
教えていただいた方法で問題は解決しました.
また分からないことが出てきた時はお願いします.

ハッシュ法のバケット値について  てんてん - 2005/11/24(Thu) 23:54 No.123

はじめまして。
ハッシュ法について質問があるのですが、よろしくお願いいたします。
検索データ数が12000件あります。そのときのバケット値(ハッシュテーブル数?)というのはどのように決めるのがよいのでしょうか?
素数がいいというのはどのHPにものっているのですが、データ数より大きいほうがいいのでしょうか?
いまいちこれだ!!という決め方が良く分かりません。
ご存知であれば教えていただけますでしょうか。

Re: ハッシュ法のバケット値について  Hiroshi - 2005/11/25(Fri) 00:29 No.124

ようこそ、てんてん さん
ハッシュテーブルにデータを格納していくので、一般的には
データ数より大きいテーブルが必要です。
では、テーブルサイズをいくらにすると良いかと言うことです
が、きめてはないのかもしれません。
以下は、一つの方法としてご覧下さい。
格納すべきデータ12000件がすでにあり、今後、データ追加が
発生することやメモリ容量や記録するメディアなどのことを
考慮して、20000件程度格納できるテーブルサイズと決めます。
20000以下の素数は19997,19993,19991,19979,…があります。
次に、テーブルサイズ19997で実際に格納してみます。この
とき最大の衝突回数を表示するようにします。同じようにして
いろいろなテーブルサイズで実行して、最小の衝突回数の
テーブルサイズを採用する。というものです。
それでは、またいつでもどうぞ。

問題がとけない・・・。CASL  甥さん - 2005/11/14(Mon) 13:25 No.121

当然のカキコミすみません。

最近、アセンブラ言語を勉強している甥さんと言います。

今は簡単な問題を解いて練習してるんですがこの問題がどうしても解けません・・・。

どなたか、教えていただけないでしょうか・・・?

<問題>
定数125と35を確保し、積を算出せよ。
シフト命令を使用しないで行った結果をGR1へ
シフト命令をしようして行った結果をGR2へ算出せよ。


Re: 問題がとけない・・・。  Hiroshi - 2005/11/15(Tue) 22:27 No.122

ようこそ、甥さん
CASL2でよろしいでしょうか。A*Bの場合、(1)シフトなしは
AをB回加算する方法、(2)シフトありはひっ算の要領でする
方法となるのでしょうか。私のサイトの次のページに説明が
ありますので、一度ご覧下さい。
http://masudahp.web.fc2.com/casl2/casl2210.html
それでは、またいつでもどうぞ。


VBについて、電卓  いぬかみっ! - 2005/06/22(Wed) 04:13 No.118

はじめまして。こちらに載っているVB電卓では『C』でクリアできるようになっていますが、Windowsの電卓みたいに『Delete』でクリアできるようにしたいと思い、Form1_KeyPressプロシージャの
『ElseIf KeyAscii = Asc("c") Or KeyAscii = Asc("C") Then cmdClear_Click』のところを
『ElseIf KeyAscii = 46 Then cmdClear_Click』
または
『ElseIf KeyAscii = vbKeyDelete Then cmdClear_Click』
と書いてみたのですが、Deleteキーが反応しません。代わりにテンキーのところの『.』がDeleteキーの代わりに反応します。(NumLockはONとOFFどっちでも反応してしまいます。)
何かいい方法があれば、ご教授よろしくお願いします。



Re: VBについて  Hiroshi - 2005/06/23(Thu) 01:43 No.119

ようこそ、いぬかみっ! さん
Form_KeyPressプロシージャでは[Delete]キーの値が得られません。
それで、If KeyAscii = 46 Then cmdClear_Click の処理を
Form_KeyDownプロシージャに書くとうまく処理されます。
ちなみに、KeyAsciiをKeyCodeに変更するのを忘れないように。
それでは、またいつでもどうぞ。

Re: VBについて  いぬかみっ! - 2005/06/23(Thu) 19:56 No.120

Hiroshiさん、アドバイスありがとうございます。
HiroshiさんのHPを参考に勉強させてもらっています。
また、つまずいたりしたら、よろしくお願いします。
まことにありがとうございました。




こんなこと聞いてもいいのかどうか・・・  shinikata - 2005/04/27(Wed) 21:57 No.115

初めまして。こんなこと聞いてもいいのかわからないのですが、ぜんぜんわからないので、質問させていただきます。台形公式での値と新の値の誤差を分割値nを増やしていくとどうなるのかというプログラムです。
台形公式で得た値と真の値との誤差は分割値nを増やしていくと当然だんだん減っていくのですが、nをだんだん大きくし、とても大きくすると誤差は小さくなることをやめ、誤差は上下します。数学的に考えるとおかしいと思ったのですが、学校の先生はそれでいいようなことを言います。なぜ上下するのでしょう?
こんなことをここで聞いてもいいものかと思いましたが、数学的なことではないと思ったので質問させていただきました。明日提出のレポートに必要なのでもしお解りの方がいましたら、教えていただければ幸いです。よろしくお願いします。

Re: こんなこと聞いてもいいのかどうか・・・  Hiroshi - 2005/04/28(Thu) 02:17 No.116

ようこそ、shinikataさん
明日提出ですか。もう、遅いですね。
コンピュータ内では10進数を2進数で記憶します。ある10進数の実数を2進数に変換したとき循環小数になり有限個の2進数では
表せなくなり、有限個を超えた部分は切り捨てられます。また、ある別の10進数の実数を2進数に変換したときは循環小数に
ならないで正確に値が変換できます。。
このようなことが誤差が上下する原因だと考えられます。
誤差について、ちょっと検索してみました。次のページなどを参考にしてみて下さい。
http://www.geocities.co.jp/SiliconValley/4334/unibon/topic/radixerror.html
http://www.ics.kagoshima-u.ac.jp/edu/expII3/exII3_3.html
他にももっとあると思います。
この程度の返答で申し訳ないですが、またどうぞ。

Re: こんなこと聞いてもいいのかどうか・・・  shinikata - 2005/04/28(Thu) 03:08 No.117

そういうことだったんですね。Hiroshiさん、ありがとうございました。

VBの質問です。VBでLAN  ホリー - 2005/04/08(Fri) 00:44 No.112

最近VBをはじめた素人なのですが、VBでLANから送られるパケットをポート指定することにより
指定されたポートからの情報を表示されるようなものを作ろうと思っております。
それはWinsockで出来るのかと思っていたのですが、Winsockはソケットプログラミングということでした。
ポートを使って通信しているオンラインゲームのようなものにソケットを付けて
情報を取るのはどうも変な気がします。実際やってみましたが出来ませんでした
オンラインゲームなどのパケットをVBで取る方法を教えてください
よろしくお願いします

Re: VBの質問です  Hiroshi - 2005/04/11(Mon) 23:22 No.113

ようこそ、ホリーさん
VBのヘルプ(キーワード検索)の「Winsock コントロール」−「Winsock (Winsock) コントロールの使い方」にも
あるように、Winsockでお互いのポート番号を合わせて通信しています。
相手のIPアドレスとポート番号がわかれば受け取ることが可能なのではないでしょうか。
詳しくわからないので、この程度の返答ですみません。
オンラインゲームを作成しているサイトで質問されてみてはいかがでしょうか。
それでは、またどうぞ。

Re: VBの質問です  ホリー - 2005/04/16(Sat) 21:19 No.114

VBではどうも辛そうなので
Cですることにしました
何とか出来ました。ありがとうございました

質問。ファイルの関連づけ  火銀 - 2005/03/30(Wed) 14:17 No.110

突然すいません。
今テキストエディターを作っているのですが、.txtに関連付けすると、うまく文章が開けません。何かいい方法、誰か教えてください。

Re: 質問  Hiroshi - 2005/04/04(Mon) 00:38 No.111

ようこそ、火銀さん
しばらくお休みで遅れましたが、もう解決したでしょうか。
自作エディタを.txtに関連付けたあと、例えば、text.txtを
ダブルクリックすると
自作エディタが起動する。このときダブルクリックしたファイル名text.txtを自作エディタで取り込む
必要がある。このファイル名text.txtはCommand関数で取り込めるようである。
試しに、Formにラベル(Label1)を貼り付け、次のプログラムを入力して実行ファイルを作成し、関連付けする。

Private Sub Form_Load()
  Label1.Caption = Command
End Sub

ファイルC:\text.txtをダブルクリックしたとすると、フォームに "C:\text.txt" と表示される。
取り込まれた文字列(ファイル名)にはダブルクォーテーションが付くようなので注意が必要です。
それでは、いろいろ試してみて下さい。
またいつでもどうぞ。


ブログの日付を取得したい。JAVAで  ふみ - 2005/02/25(Fri) 20:23 No.108

こんにちは。失礼します。

最近ブログを始めまして、自分のサイトのトップからこのブログページにリンクを貼り、訪問者が行き来できるようにしました。
ここでふと思ったのですが、JAVAスクリプトを使ってブログページの最新の更新の日付を、自サイトのトップページに表示することはできないのでしょうか?
つまりブログのXMLから最新の日付データを取得して別のHTMLに表示させる、といったようなことが可能ならばご教授いただきたいのですが。
よろしくお願いします。

Re: ブログの日付を取得したい。  Hiroshi - 2005/02/27(Sun) 22:39 No.109

ようこそ、ふみさん。
さて、JAVAスクリプトには別のファイルを操作する命令はなかったと思います。そこで、使うものはPerlなどの
CGIになるかと思います。
ブログのファイルの更新日をファイルに書き出し、トップページで読み込んで表示する。という方法が考えられます。
しかし、これもブログとトップが同じサイトにある場合に限定されます。(たぶん?)
ということで、CGIを解説したサイトで質問してみて下さい。
解決できましたら、こちらにも教えて下さい。(厚かましいお願いですが。)
お役に立てずにすみません。
また、よろしければいつでもどうぞ。


VB電卓について  syati - 2005/02/03(Thu) 21:53 No.102

はじめまして。syatiと申します。

私は今あなた様のVBのページで電卓を作ることを勉強させていただいております。
突然で恐縮ですが、質問があり、書かせていただきます。
以前、ブルーさんという方がお聞きしたことと同じ質問なのですが、私もwindowsのアクセサリの電卓のようなプルグラムを目指しています。1+3=4,=7,=10となっているところに何か適当な数を打ち込んだときでも、=(等号)を押すと、以前の計算式を覚えており、再び、=13,=16となるようにしたいです。
CEボタンは自分で作成し、途中CEを押したとき、再び=を押すと、計算の続きは行うようにできたのですが、途中数字を入力し、再び=を押すと押した数字が加算されていくようになってしまいます。
読みづらい文章で恐縮ですが、わからない部分は以前のブルーさんと同じことです。

よろしければ、ご教示お願いいたします。

Re: VB電卓について  Hiroshi - 2005/02/06(Sun) 13:02 No.103

ようこそ、syatiさん
数字キーを押した後に=キーまたはクリアキーを押した処理を同じものにしているので、質問のような状態になります。
そこで、数字の後の=とクリアの処理を分けます。しかし、このままでは区別が付きませんので「= → 数字 → =」のとき
の1つ目の=を記憶しておき、「= → 数字 → =」のとき途中の数字を無視するようにします。
グローバル変数として=キー用を追加します。
  Dim EQUFlag As Boolean    '=キー用
Form_LoadとcmdClear_Clickプロシージャで初期化します。
  EQUFlag = False
演算キーを押したときの処理を次のように修正します。
Private Sub cmdEnzan_Click(Index As Integer)
  If SuuFlag = True Then  '数字キーが押された後
    If EFlag = False And EQUFlag = False Then  '※1 クリアキー以後初めての演算キー
      dData1 = Val(txtDisplay.Text)  '1つ目数値記憶
      EFlag = True
    ElseIf EQUFlag = False Then  '※2
      dData2 = Val(txtDisplay.Text)  '2つ目数値記憶
    End If
    If Index <> EQU Then
      Keisan
      Enzan = Index  '演算種類記憶
      dData2 = 0
    Else
      Keisan
      EFlag = False
      EQUFlag = True  '※3
    End If
    txtDisplay.Text = Trim(Str(dData1))
  ElseIf Index = EQU Then
    If dData2 = 0 Then
      dData2 = dData1
    End If
    Keisan
    txtDisplay.Text = Trim(Str(dData1))
    EFlag = False
    EQUFlag = True  '※3
  Else
    dData1 = Val(txtDisplay.Text)  '1つ目数値記憶
    dData2 = 0
    Enzan = Index  '演算種類記憶
    EFlag = True
    EQUFlag = False  '※3
  End If
  SuuFlag = False
End Sub
※1でクリアのときだけ表示されている数字をdata1に記憶する。
※2でクリアと=以外のとき表示されている数字をdata2に記憶する。
※3はEQUFlagの設定である。
最後に、数字キーの処理を次のように修正する。
Private Sub cmdNum_Click(Index As Integer)
  Dim num As Double

  '0が1文字だけ、または、演算キーを押した後の時
  If txtDisplay.Text = "0" Or SuuFlag = False Then
    txtDisplay.Text = ""    '0を消す
    'dData2 = 0  '※削除する
  End If

最初からご質問のような状態を想定していなかったので、このような場当たり的な方法ですがいろいろと試してみて下さい。
それでは、またいつでもどうぞ。

ご回答ありがとうございます。  syati - 2005/02/06(Sun) 17:41 No.104

お教えいただき、まことにありがとうございました。
丁寧にお教えいただいたお陰で、私にもよく理解でき、質問した箇所がきちんと動作するようになりました。
申し訳ありませんが、もう一つわからない点がありますので再度ご教示お願いします。

お教えいただいたプログラムにより、計算の途中に数字を入力し再び=を押すと前の計算式の続きができましたが、
今度はその後、新たに数字を押し、演算キー(+,-,*,/)、数字、=で計算を行おうとすると、答えの値が違ってしまうのです。
1+3=4、=7となっており7のあと =なら10となります
7のあと+4などとした場合に11になります。
できないところは、
1+3=4,6+7=13のように、式の結果が表示された後、クリアキーを押さずに続けて、入力した際の値が求められません。

VBの電卓のページのままのソースなら、動作しておりましたが、今回お教えいただいたソースを付け加えると、その点ができなくなりました。
前回お教えいただいた、プログラムと今回お聞きしたことが同時にできるようにしたいです。自分でもただいま試行錯誤考えております。
お手数をおかけして恐縮ですが、またお教えいただきたいです。
どうぞよろしくお願いいたします。

VB電卓について  syati - 2005/02/07(Mon) 00:50 No.105

お世話になっております。syatiです。
上記の質問ですが、なんとか試行錯誤、ソースをいろいろと試しては書きしているうちに、完成にいたることができました。
これも前々回のご質問をhiroshiさんに丁寧に解説していただいたお陰だと思います。

また、今後プログラムについてわからないことがあったときも、お教えいただければ、幸いです。
本当に、丁寧なご教示ありがとうございました。

Re: VB電卓について  Hiroshi - 2005/02/07(Mon) 01:24 No.106

自力でできて良かったですね。できると気持ちいいでしょう。
やはり、場当たり的に作るといろいろと問題が出てきます。
けれども、また場当たり的に次のようにするとできますので、
一応リストを掲載します。上記リストの ※2 の次のifブロックとして追加します。
    ElseIf EQUFlag = True And Index < 4 Then
      dData1 = Val(txtDisplay.Text) '1つ目数値記憶
      Enzan = NONE
      EFlag = True
      EQUFlag = False
    End If
=キーのあとで、数字キーの次に演算(+,-,*,/)キーが押されたときという
判定です。
それでは、またいつでもどうぞ。

ありがとうございます。  syati - 2005/02/08(Tue) 00:09 No.107

早々のご回答まことにありがとうございます。
引数を利用するという考え方でよかったのですね。
hiroshiさんのページを参考に作らせて頂いているので、考え方も、少しずつ身につけることができ、大変勉強になっています。模範解答に近い考え方で、うれしいです。

また、わからない点がでてきましたら、お教えいただければ幸いです。丁寧なご回答、まことにありがとうございました。




JavaScript  SS - 2004/11/09(Tue) 19:19 No.100

はじめまして。プログラミングに興味があって、いろいろ試させてもらっています。
ところで、JavaScriptの解答チェックのスクリプトでanschk1.jsのソースがあるのですが、 「行34、文字58、 ”}”がありません」というコンパイルエラーのメッセージが出ました。これは間違っているのでしょうか?

Re: JavaScript  Hiroshi - 2004/11/09(Tue) 21:21 No.101

ようこそ、SSさん
さて、anschk1.jsが載っている
http://masudahp.web.fc2.com/js/js103.html
のHTMLソースとJavaスクリプトそれぞれをドラッグで範囲選択し、コピーしたもので表示(実行)してみましたが
エラーは表示されませんでした。
「"}"がありません」ということはエラーの場所より前に対応する"{"がないということですからリストを見直してみて下さい。
もしよろしければ、エラーの出たJavaのスクリプトとHTMLソースをメールの添付として送って下さい。
それでは、またいつでもどうぞ。


多項式の計算プログラムが作成できなくて・・・  PRON - 2004/10/18(Mon) 20:30 No.96

初めまして、PRONと申します。
学校から課された情報処理の課題がお手上げ状態で、質問させていただきました。C言語のサイトは多々あるのですが、どこを見てもどうしても解らなくて困っています。
いろいろ条件がありまして
 ・スタックを使う
 ・読み込む部分はMain関数で行い、多項式の計算をする部分  を関数にする(戻り値は多項式の値)
 ・多項式の次数はNとし、N+1個の次数a[0]....a[N]を読み  込み、最後にxの値を読み込む
ということなのです。何とかお力をお貸ししていただければと思い、質問させていただきました。まことに失礼ながらあまり時間がなくて、出来るだけ早めに返信していただきたく思います。長々しい質問にならび、無理なお願いをお許しください。よろしくお願いします。

Re: 多項式の計算プログラムが作成できなく...  Hiroshi - 2004/10/19(Tue) 01:28 No.97

ようこそ、PRONさん
多項式って、こんなのですよね。x3はxの3乗です。
 y = ax3 + bx2 + cx + d
a,b,c,dの係数をa[0],a[1],a[2],a[3]に、最後にxを読み込んでyを求めるのですよね。
どこでスタックを使いましょうか?ちょっとわかりませんでした。
それで、次のようなものを作ってみました。参考になるかどうかはわかりませんが・・・(注:空白は全角です)
#include <stdio.h>
void main(void)
{
  double a[4],x,y;
  double takou(double [], double);

  a[0]=2.0;
  a[1]=1.0;
  a[2]=3.0;
  a[3]=4.0;
  x=2.0;

  y=takou(a, x);
  printf("y=%f\n", y);
  y=a[0]*x*x*x + a[1]*x*x + a[2]*x + a[3];
  printf("y=%f\n", y);
  y=x*(x*(a[0]*x + a[1]) + a[2]) + a[3]; /* (3) */
  printf("y=%f\n", y);
}
double takou(double aa[], double xx)
{
  double w;
  int n;

  w=aa[0];
  for(n=1; n<=3; ++n)
    w=w*xx+aa[n];
  return(w);
}
(3)の式は y = ax3 + bx2 + cx + d を変形したものです。
y = x * (x * (a*x + b) + c) + d となります。
mainの読み込みも省略しました。

多項式、数値計算、数値解析、等で検索するとたくさんwebページもありますので調べてみて下さい。
とりあえず、お急ぎということでしたので。
それでは、またどうぞ

Re: 多項式の計算プログラムが作成できなく...  Hiroshi - 2004/10/19(Tue) 01:33 No.98

関数takouについて抜けてしまいました。
関数takouは、式変形後のy = x * (x * (a*x + b) + c) + dを繰り返しで計算できるようにしたものです。
繰り返しにしておけば次数の増減も簡単ですので。
それでは、今度こそ、またどうぞ

Re: 多項式の計算プログラムが作成できなく...  PRON - 2004/10/19(Tue) 21:26 No.99

こんなに丁寧で詳しく作成していただけて感謝しています!せかしてしまったのに本当にありがとうございました。何か困ったらまた足を運んでしまうかもしれませんが、その時はまたよろしくお願いします・・・

HTMLエディタについて  gotou - 2004/08/12(Thu) 20:04 No.94

初めましてgotouと申します
今HTMLエディタを作っていて、このサイトを見つけて喜んでいたのですが、入力したタグに色を付けるところをVB.NETに移植したところ、<>が終わっても色が元の色に戻りません
VB.netは最近始めたのでよく分からないので
できるだけわかりやすく教えてください。お願いします

Re: HTMLエディタについて  Hiroshi - 2004/08/19(Thu) 01:53 No.95

ようこそ、gotouさん
ちょっと夏休みで、返事が遅くなりました。
結果?(原因)から申しますと、リストの誤りです。VB6とVB.netの
違いによるものではありません。

Private Sub RichTB_Change()プロシージャのElseIf部にある
 RichTB.SelColor = QBColor(Val(cmbColor.ListIndex))

 RichTB.SelColor = QBColor(0)
に訂正して下さい。QBColor(0)は黒色です。

実行確認用は修正してあったのですが、テキストの方がそのままになっていたようです。
リストを見ていて、上にあるcmdTag_Click()プロシージャも
"<"があって、">"がないときの処理がないなど、まだまだ改良の
余地があるようです。
いろいろと試してみて下さい。
また、よろしければどうぞ。


デバイスコンテキストについて  ryu - 2004/08/03(Tue) 22:38 No.91

どうも初めましてryuと言います。
今、DirectXを使ったネットワークの勉強をしていて、ネットワークを使ったお絵かきソフトを作ろうと思ってます。
そこでサーバ上で作ったデバイスコンテキストとビットマップデータをクライアントに送ればサーバと同じ絵が出るはずだと思い、実装しようとしているのですが、なかなか上手く行かずに困っております。
ちょっと問題のソースを書いてみます。
[サーバ側]
(構造体宣言)
typedef struct {
S2C_HEAD Header; // ヘッダー
char Num; // 画像番号
HDC Hdc; // デバイスコンテキスト
HBITMAP Bitmap; // ビットマップデータ
} NET_S2C_0130;

(変数宣言)※全てグローバルです
extern HDC hDC; // デバイスコンテキスト
extern HBRUSH br; // 裏画面に用意するブラシ
extern NET_S2C_0130 g_SndPictureData; // 送信データ

(初期化)
hDC = GetDC(hWnd); // DCを取得
br = CreateSolidBrush(RGB(255,255,255)); // ブラシの初期化
g_SndPictureData.Hdc = CreateCompatibleDC(hDC); // hDCと互換性のあるDCの作成

g_SndPictureData.Bitmap = CreateCompatibleBitmap(g_SndPictureData.Hdc, 400, 320); // ビットマップ作成
SelectObject(g_SndPictureData.Hdc, g_SndPictureData.Bitmap); // 関連付ける

RECT rt; // サーバ画面のサイズ
rt.left = 0;
rt.top = 0;
rt.right = 400;
rt.bottom = 320;

SelectObject(g_SndPictureData.Hdc, br); // ブラシをセット
FillRect(g_SndPictureData.Hdc, &rt, br); // DC初期化

(描画)※ラインを引っ張ってるだけです
SelectObject(g_SndPictureData.Hdc, g_SndPictureData.Bitmap);
MoveToEx(g_SndPictureData.Hdc, 0, 50, NULL);
LineTo(g_SndPictureData.Hdc, 180, 100);
BitBlt(hDC, 0, 0, 400, 320, g_SndPictureData.Hdc, 0, 0, SRCCOPY); // 表画面に転送

(送信)
g_SndPictureData.Header.Command = 0xD0; // コマンド
g_SndPictureData.Num = 0; // 絵の番号
SendDirectPlayMessage(playerID, (BYTE*)&g_SndPictureData, sizeof(NET_S2C_0130)); // データ(構造体)を送信

[クライアント側]
(構造体宣言)
typedef struct {
S2C_HEAD Header; // ヘッダー
char Num; // 画像番号
HDC Hdc; // デバイスコンテキスト
HBITMAP Bitmap; // ビットマップデータ
} NET_S2C_0130;

(変数宣言)※全てグローバルです
extern HDC hDC; // デバイスコンテキスト
extern NET_S2C_0130 g_RcvPictureData; // 受信データ

(初期化)
hDC = GetDC(hWnd); // DCを取得

(サーバからのデータ受信)
NET_S2C_0130* cmd0130;
cmd0130 = (NET_S2C_0130*)pMsg->pReceiveData;
CopyMemory(&g_RcvPictureData, cmd0130, sizeof(NET_S2C_0130));
g_RcvPictureData.hDC = CreateCompatibleDC(hDC); // 関連付ける

(絵の表示)
SelectObject(g_RcvPictureData.hDC, g_RcvPictureData.Bitmap);
BitBlt(hDC, 0, 0, 400, 320, g_RcvPictureData.hDC, 0, 0, SRCCOPY); // 表画面に転送

こんな感じで、サーバで作ったHDCとHBITMAP型の変数をそのままクライアントへ送って表示させようとしてるのですが、全く表示されません・・・データの送受信の部分は特に問題無いと思うのですが・・
よろしければ、何かアドバイスをして頂けると嬉しいです。
後、とても長くなってしまい申し訳ありませんでした。

Re: デバイスコンテキストについて  Hiroshi - 2004/08/04(Wed) 00:37 No.92

ようこそ、ryuさん
私、vcは、まったくの素人です。DirectXも使ったことがありません。それでは・・・
と終わってしまうのも愛想がありませんのでソースを見た感想だけ。
(1) DirectXを使う場合、DirectXの初期化の処理がもっと必要なのではないでしょうか。サーバ側にもクライアント側にも
その処理が内のでちょっと疑問に思います。
(2) サーバから受信した構造体データの中でデバイスコンテキストhDCはサーバ内だけで有効なものでクライアント側では
意味のない値ではないでしょうか。
画像データだけを受信して、クライアント側ではクライアント用のデバイスコンテキストDCを作成して、そこへ受信した画像
データを表示する必要があるのではないでしょうか。
VBでも、サーバで作成したオブジェクトをクライアントに渡すことはなく、オブジェクトのデータだけを送信して、受け側では
受け側独自にオブジェクトを作成して受信したデータをオブジェクトのデータとするのが一般的なのではないでしょうか。
DirectXは違った処理ができるのかもしれませんが、一般論としてお聞き下さい。
全然解決にはならないでしょうが、最初にも書きましたようにvcをvcとして使ったことがありませんし・・・ということで
お許し下さい。
どなたか、答えて頂ける方、よろしくお願いします。

Re: デバイスコンテキストについて  ryu - 2004/08/04(Wed) 02:53 No.93

どうも返信ありがとうございます。
全部書いてしまうと長くなってしまうので、DirectXの初期化等は全て省いてしまいました。
分かり難くて申し訳ないです。
なるほど、デバイスコンテキストの送受信は意味が無いんですか・・・
点や線のデータがどこに入ってるのか良くわからなかったもので、とりあえずデバイスコンテキストとビットマップの両方をクライアントに渡したのですが・・
ということは、サーバで表示させている点や線のデータというのはHBITMAP型の変数に入ってるということなんでしょうか・・?
デバイスコンテキストは単に画面に表示しているに過ぎないと・・・ということは画像データのありかさえわかれば出来そうですね。
プログラム内で動的に画像データを作成するような方法を探してみます。
返信どうもありがとうございました。
それでは

HIROさんからの質問。C言語  Hiroshi - 2004/07/27(Tue) 23:28 No.88

以下、掲示板からの再掲です。Hiroshi.
皆様はじめましてHIROです。
私は、夏休みを利用してボーランドC++でC言語を勉強しています。
↓のスクリプトが上手く作動しないので教えて欲しいのですが・・・

#include <stdio.h>
void main()
{
  int  kokugo,sugaku,eigo;  //国語と数学と英語の初期化
  int  kyouka,toll,aveg;   //教科数・合計・平均

  kokugo=0;
  sugaku=0;
  eigo=0;

  kokugo=0;
  sugaku=0;
  eigo=0;

  printf("国語の点数?\n");
  scanf("%d",&kokugo);
  toll+=kokugo;
  kyouka++;

  printf("数学の点数?\n");
  scanf("%d",&sugaku);
  toll+=sugaku;
  kyouka++;

  printf("英語の点数?\n");
  scanf("%d",&eigo);
  toll+=eigo;
  kyouka++;

  aveg=(double)toll/kyouka;

  printf("*点数*\n");
  printf("国語:%d\n",kokugo);
  printf("数学:%d\n",sugaku);
  printf("英語:%d\n",eigo);
  printf("合計:%3d/平均:%5.1f\n",toll,aveg);
}

よろしくお願いします。

Re: HIROさんからの質問  Hiroshi - 2004/07/27(Tue) 23:56 No.89

プログラムを見て、これでは「合計と平均が正しく表示されない」と思いました。
問題点は次のとおりです。

(1) int  kyouka,toll,aveg;   //教科数・合計・平均

 平均値を格納する変数avegは実数です。平均を計算している部分aveg=(double)toll/kyouka;でキャスト演算子(double)を
使っているので、宣言は次のようにします。
    int  kyouka,toll;
    double aveg;

(2) printf("国語の点数?\n");
  scanf("%d",&kokugo);
  toll+=kokugo;   ←ココ
  kyouka++;

 変数tollを初期化せずに使っています。(コンパイルで警告が出ませんでしたか?)
 C言語は変数を宣言しただけではその内容が不定です。すなわち、この時点で変数tollが記憶している値は0ではなく
何が記憶されているのかわかりませんので正しく計算される保証はありません。
 次のように宣言の後で0で初期化する式を追加します。
    toll = 0;
 または、宣言時に0で初期化する式を追加します。
    int  kyouka,toll = 0;

 間違いではないですが、次の国数英の初期化
  kokugo=0;
  sugaku=0;
  eigo=0;
が重複しています。さらに、この3つの変数はscanfで値が格納されるので、初期化自体も不要でしょう。
 また、平均の計算は次のように
    aveg=(double)toll/(double)kyouka;
するのが良いでしょう。一方の(double)がなくても型の自動変換によって実数で計算されますが、型の自動変換に余分な
処理時間がかかってしまうので明示した方が良いでしょう。

 (1),(2)の修正だけで結果は出ると思います。一度試してみて下さい。
 それでは、またいつでもどうぞ。

Re: HIROさんからの質問  HIRO - 2004/07/28(Wed) 01:44 No.90

分かりやすいご説明ありがとうございました
また分からないことがありましたら、お聞きしたいと思います。


VB電卓について  ブルー - 2004/06/16(Wed) 00:58 No.85

こんばんわ、VBのページ、大変参考になり、大助かりで読ましてもらってます。
ところで突然の質問、どうかよろしくおねがいします。

私は今、個人的なVBの勉強のためにこのプログラムを基にWindowsのアクセサリにある電卓のような仕様のものを作ろうとしています。

そしてこちらのHPで紹介されておりますVB電卓なのですが、「6+3=」とやって、答えが9と出てからもなお、「=」を押し続けるとどんどん「3」が加算されていく仕組みで、その連続計算の途中で違う数字を入れると(例えば「9」を入れると「9」がどんどん加算されていく)その数字がどんどん加算されていくという仕様ですが、Windowsのアクセサリの電卓みたく、もし、違う数字を入れて「=」を押してもその数字の後に演算キーを押さない限り以前の計算(「6+3」なら「6+3」)が続く仕様にするにはこのプログラムのどこでどんな構文を書けば良いのでしょうか?

私はフラグでやってみようと思ったのですが、どうしてもうまくわかりません。

どうかご教授お願いします。m−−m

Re: VB電卓について  Hiroshi - 2004/06/18(Fri) 00:31 No.86

ようこそ、ブルーさん。
 さて、私の電卓プログラムでは、‘=’と‘C’キーを同じ扱いにしているためにおたずねのようなことになります。そこで、‘=’と‘C’キーの処理を分けるためのフラグを用意します。また、‘=’キーのあと数字キーを押して、さらにどの演算キーを押したかによっても処理を分ける必要があると思います。実際に組んでみないと確かなこと言えないのですが、リストを見る限りそのように思います。
数字キー押したときのcmdNum_Clickプロシージャで、表示を消している部分でdData2の値も0にしている部分は削除する必要があります。
If txtDisplay.Text = "0" Or SuuFlag = False Then
  txtDisplay.Text = "" '0を消す
  'dData2 = 0
End If
数字キーを押した時点でdData2が0になり、‘C’と‘=’の処理を分けてもどんどん加算されなくなるためです。

 ちょっと、実際に組む時間がないので、あやふやですが、いろいろと試してみて下さい。
 もしよろしければメールアドレスを教えて下さい。できれば(いつになるやら)お知らせしたいと思いますので。
それでは、またいつでもどうぞ。


パケットモニタについて  mode - 2004/06/04(Fri) 16:54 No.81

初めまして、突然の質問をお許しください。

VB6.0で、パソコン上でやり取りされるパケットをモニタするようなソフトを作りたいのですが
Winsockのコントロールでそれは可能でしょうか?
検索で様々なサンプル・ソースを見つけましたがどれもC言語で書かれており、
他言語が読めない私には少し辛いものがあります。
VB6.0で開発可能なソフトであれば、
どのようなWebサイト、図書、情報誌が参考になるかご教授頂ければ幸いです。

以下サンプル
http://homepage2.nifty.com/spw/tips/PacketDump.html
http://www.geocities.jp/fjtkt/problems/2004_0021.html
http://xcorp.saposen.com/toolz/xlog.html

Re: パケットモニタについて  Hiroshi - 2004/06/10(Thu) 01:08 No.82

ようこそ、modeさん。
VBでパケットモニタ・・・、ちょっと記憶にありません。
サンプルで示していただいたページを見てみました。
ちょっと、すぐにはわかりません。
今、ちょっと時間がありません。できましたらここへ
または、掲示板の方へ書き込みます。でも、できないかもしれません。
お力になれなくてすみません。どなたかご存じの方、ご教示頂けると
大変嬉しいです。
どうぞよろしくお願いします。

Re: パケットモニタについて  mode - 2004/06/10(Thu) 09:10 No.83

お返事ありがとうございます。
自分は趣味でVBを初めてまだ1ヶ月でして、初心者の域を抜けていません。
おかしな質問でHiroshiさんを困らせてしまい反省しております。

今まで自分なりに色々と調べた結果、
Win32 APIのWindows Sockets を使用すればこの様な動作が可能みたいです。
Win32を説明した以下の書籍も購入し、独学に精を出しています。
http://www.amazon.co.jp/exec/obidos/ASIN/4883371980/qid=1086825280/sr=1-2/ref=sr_1_8_2/250-9898158-2448268

これを含め、VB6.0関連の書籍は初級〜上級まで10冊程になりました。
Web上でも有益なサイトは複数見つけたので、
あとは自分の頑張り次第でなんとか作れそうです。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
http://www.vbvbvb.com/jp/index.html

ご迷惑おかけして申し訳ありませんでした。
途中で断念してしまうかもしれませんが、仕上がれば報告させて頂きます。

駄文失礼しました。

過去ログ
メニューに戻る




inserted by FC2 system