Dim i As Integer:Dim i2 As Integer:Dim card(5) As Integer:Dim expectPoint0card(1) As Integer '0枚のカードを交換する場合のすべての選択肢の期待値
Dim expectPoint1card(5) As Integer
Sub porkerGame()
card(1) = 1: card(2) = 2: card(3) = 3: card(4) = 4: card(5) = 5
getExpectPoint1card expectPoint1card
End Sub

Sub getExpectPoint1card(expectPoint1card() As Integer)
Dim tesu1 As Integer:Dim sum1 As Integer
For i = 1 To 5
getTesuSum1 i, tesu1, sum1
expectPoint1card(i) = sum1 / tesu1
Next i
End Sub

Sub getTesuSum1(rowNumber As Integer, tesu1 As Integer, sum1 As Integer)
Dim card2(5) As Integer:tesu1 = 0:sum1 = 0
MsgBox rowNumber
copy card, card2, 5
MsgBox rowNumber
For i = 4 To 55
MsgBox rowNumber
card2(rowNumber) = i
addTesuSum card2, tesu1, sum1
Next i
End Sub

Sub copy(row() As Integer, row2() As Integer, i2 As Integer)
For i = 1 To i2
row2(i) = row(i)
Next i
End Sub
上記のプログラムで、ウィンドウに1,6,4,5,6と表示され、その次には、エラーが表示します。僕は、ウィンドウに表示される変数RowNumberの値がしばらくの間は1のままであるようにプログラムを書いたつもりなのですが、変数rowNumberの値が変わるのは、どうしてでしょうか?教えてください。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

補足しますと、rowNumber は 元々 i を「参照渡し」してますので、i の変化に合わせて変化してます。



i = 1 で getTesuSum1 に渡され、MsgBox 1
更に copy に渡され i = 5 まで実行され、i = 6 で For を抜けて copy から戻った時に MsgBox 6
更に 次の For で i = 4 になり、MsgBox 4
次に For 内でインクリメントされて MsgBox 5
次に For 内でインクリメントされて MsgBox 6
そして card2(5) に 6 は入らずオーバーフロー

引数の規定は参照渡し(ByRef)なので 値渡し(ByVal) にするのも手です。

Sub getTesuSum1(ByVal rowNumber As Integer, tesu1 As Integer, sum1 As Integer)

いずれにしても、同じ変数を ローカル以外で宣言して使うのは必要範囲に留めましょう。
    • good
    • 0
この回答へのお礼

なるほど。rowNumberの値がiと等しいようになっているから、このようなことがおこるのですね。これで、わかりました。どうもありがとうございました。

お礼日時:2005/04/17 17:36

Sub addTesuSum


は、どのようなコードなのでしょうか?

>MsgBox rowNumber
は、Debug.Print か、ウォッチ式の変わりですか?
それ自体に、意味があるとは思えませんが。

この回答への補足

このプログラムはポーカーゲームのプログラムを作っていて、うまくいかないところがあったので、そのままそのプログラムを書き込もうとすると800字以上で書き込めなかったために、質問に必要なところ以外を削除したものですが、いらないところが残っていたようです。

補足日時:2005/04/17 17:37
    • good
    • 0

VBは解りませんが、、、


Dim i As Integer を

Sub getExpectPoint1card(expectPoint1card() As Integer)
Sub getTesuSum1(rowNumber As Integer, tesu1 As Integer, sum1 As Integer)
Sub copy(row() As Integer, row2() As Integer, i2 As Integer)

などでバラバラに使うなら、Sub 内で宣言しないとダメなのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTML→PHP フォームの値の受け渡しができません

PHPをはじめたばかりの初心者です。
ネットでいろいろ調べましたがわからず困っています。
お助けくださいm(_ _)m

<内容>
フォームの入力内容をPHP側で参照できません。
具体的には、
<form method="post" action="test.php">
<select name="BirthDay" size="1">
<option value="1">1月生まれ</option>
<option value="2">2月生まれ</option>
<option value="3">3月生まれ</option>
</select>
<input type="submit" value="決定">
</form>
で飛ばした値を、
print($BirthDay);
で表示させようとしています。
しかし、$BirthDayには何も入ってきません。
ただ、できないのはローカル環境だけで、
実際、他のサーバーにアップしてやると正常に
動作します。
ローカル環境は
Win2000SP4+PHP4.4.1+Apache1.3.34
です。
httpd.confを見直しましたがわかりませんでした。
ぜひアドバイスをお願いしますm(_ _)m

PHPをはじめたばかりの初心者です。
ネットでいろいろ調べましたがわからず困っています。
お助けくださいm(_ _)m

<内容>
フォームの入力内容をPHP側で参照できません。
具体的には、
<form method="post" action="test.php">
<select name="BirthDay" size="1">
<option value="1">1月生まれ</option>
<option value="2">2月生まれ</option>
<option value="3">3月生まれ</option>
</select>
<input type="submit" value="決定">
</form>
で飛ばした値を、
print($BirthDay);
で表示させようと...続きを読む

Aベストアンサー

そういうときは

$_POST[BirthDay] で受け取ります
GETの場合は
$_GET[]です

Qマクロで100マス計算! Dim i,j As Integer For i = 2 ToRang

マクロで100マス計算!

Dim i,j As Integer

For i = 2 ToRange(”A1”).End(xlDown).Row
For j=2 To Range(”B1”).End(xlToRight).Column

Cells(i,j).Value = Cells(i,1).Value * Cells(1,j).Value
Next j
Next i
Endsub

上記のように記述しましたが、
iの最終行が2となってしまっていますがなぜこのコードが間違っているのか分からないです。。どなたか教えていただけたら嬉しいです!

Aベストアンサー

確認してはいませんが…


>改行、スペースは実際にはきちんととっていますので気にしないでください
とのことなので、違っているのかもしれませんが、

>For i = 2 ToRange(”A1”).End(xlDown).Row
         ↓
 For i = 2 To Range(”A1”).End(xlDown).Row
で、うまくいきませんか?
100マス(10×10)と最初から決まっているので、範囲は 2 To 11 でも良いように思いますが…

改行、スペースなどが正しくなっているなら、Range(”A1”).End(xlDown).Rowの値が2以下になっている可能性が考えられます。(ということは、A1が空白セル、または、A3が空白セルなどなど・・)
A1が空白セルの場合は、
 For i = 2 To Range(”A2”).End(xlDown).Row
とするか、
 For i = 2 To 11
などとすることで、動作するのではないかと推測します。

Qhtmlからphpへの値の受け渡しについて

いつも助けてもらってます。
今回も宜しくお願い致します。

現在、複数のhtmlページから一つのphpを呼び出しているのですが、
phpのselect文の中で各ページの持つ定数(変数?)を使用したいと考えています。

phpのselect文
SELECT
*
FROM
ITEM
WHERE
ITEM_DIV = 各ページの定数(文字列)


各ページの定数は、必ず同じ物です(ダイエット、食品etc..)
グーグルなどで調べた結果、
POSTやSESSION、FORMで出来そうな感じだったのですが、

渡すものがいつも決まっていて、かつ一つなので
もっと簡単に渡せるんじゃないかな?と考えて投稿させてもらいました。

宜しくお願いします!!

Aベストアンサー

php側で、どのhtmlからリンクされたかが分かればいいと思いますので、
サーバ環境変数の $_SERVER['HTTP_REFERER'] で可能かと思います。

参考URL:http://lib.stwing.jp/archives/2005/09/php_server.html

QDim x As Integer = 0

いつもお世話になっております。

只今、本に記載してあるソースコードを手入力しています。
標記のように入力したら、『コンパイルエラー 修正候補:ステートメントの最後』というエラーが出ました。

(1)このエラーは無視してもよいのでしょうか?
(2)そもそも、変数の宣言文の後ろに=0をつけている意味がわかりません。当方VB初心者です。

よろしくお願いいたします。

Aベストアンサー

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsugi.ed.jp/vba4graduate/vba_hensuusyokika.htm
ーーー
定数のConstであればこういう書き方はOK
Sub test01()
Const x As Integer = 0
MsgBox x
End Sub
ーーー
VB.NETでは、OK
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim x As Integer = 10
MsgBox(x)
End Sub
ーー
Javaでは可能であるようです
http://msugai.fc2web.com/java/var2.html
ーーーーー
>ろに=0をつけている意味がわかりません
宣言と同時に値を与える=初期化する

この点は(変数の宣言と初期化は)言語による、と考えるべきです。
この質問は何の質問か。
VB系統らしいことは判るが
VB以外のBASIC
VB6
VBA
VB.NET系統
のどれか質問に書くべき。質問者は経験が無くて、視野がそこまで行かないのかも知れないが。
ーーー
VBAでは(多分VBでも同じ。テスト環境がないので)
Sub test01()
Dim x As Integer
x = 0
MsgBox x
End Sub
はOK
ーー
Sub test01()
Dim x As Integer =0
MsgBox x
はDim x As Integer =0
と入力した段階でエラー。
http://www.bunsug...続きを読む

Qhtmlファイルからphpファイルへの値の受け渡し

表を使った問い合わせフォームを作成したのですが、データを受け渡す方法がわかりません!!

初めの問い合わせページは以下のようにhtmlファイルで記述しました。

この場合、次のページにデータを引き渡すphpファイルには、どうのような記述をしたら良いのでしょうか?

<form method="post" action="info.php">
<table class="table margin01" width="592" border="0" cellpadding="0" cellspacing="0">

<tr>
<td width="190" align="left" bgcolor="#FFF09D">お名前 <span class="tabletext1">※必須</span></td>
<td><input name="name" type="text" class="form01" id="name" /><br />
入力例:山田 太郎
</td>
</tr>

<tr>
<td align="left" bgcolor="#FFF09D">メールアドレス <span class="tabletext1">※必須</span></td>
<td><input name="mail" type="text" class="form01" id="mail" /><br />
入力例:●●●●●●@yamada.co.jp
</td>
</tr>

<tr>
<td align="left" bgcolor="#FFF09D">メールアドレス(確認) <span class="tabletext1">※必須</span></td>
<td><input name="mail2" type="text" class="form01" id="mail2" /></td>
</tr>

<tr>
<td align="left" bgcolor="#FFF09D">お問い合せ内容 <span class="tabletext1">※必須</span></td>
<td>
<select name="list" id="list">
<option>お問い合せ内容をお選びください</option>
<option>事業内容について</option>
<option>求人について </option>
<option>その他</option>
</select>
</td>
</tr>

<tr>
<td align="left" bgcolor="#FFF09D">内容 <span class="tabletext1">※必須</span></td>
<td><textarea name="content" id="内容" cols="45" rows="5"></textarea></td>
</tr>

</table>

<p align="center" class="margin01">
<input type="reset" value="クリア" />
<input type="submit" value="送信内容を確認する" />
</p>
<input type="hidden" name="test" value="cloud" />
</form>

表を使った問い合わせフォームを作成したのですが、データを受け渡す方法がわかりません!!

初めの問い合わせページは以下のようにhtmlファイルで記述しました。

この場合、次のページにデータを引き渡すphpファイルには、どうのような記述をしたら良いのでしょうか?

<form method="post" action="info.php">
<table class="table margin01" width="592" border="0" cellpadding="0" cellspacing="0">

<tr>
<td width="190" align="left" bgcolor="#FFF09D">お名前 <span class="tabletext1"...続きを読む

Aベストアンサー

ここが参考になりますかね。


http://www.phppro.jp/school/phpschool/vol6/1


postの処理をどう判定するのかどうか書いてあります。

若干異なるのは、質問者さんは次の画面で入力チェックを行いたいと言う事ですが、
参考サイトは遷移前で入力チェックを行っています。
入力するたびに次画面に遷移してエラーであれば戻ると言うのは
あまりよろしくないかと思いますが…。

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QHTML データ受け渡し

HTMLのデータ受け渡しをしたいのですが

例えば

・担当者_HTML

担当者選択
A        ←Aを選択(Aという値を年齢_HTMLに転送)


・年齢_HTML

年齢選択
20代     ←20代を選択(20代という値とBという値を実行ファイルに渡したい)
30代

Aベストアンサー

これだけのデーターだとすると、自作自演。

このような事をしたいと思うということは、この手の事をしていないと、この発想をしない。

とりあえず、候補を挙げておくが。

基本的なところから

http://reference.ascii.jp/html/form

ServerSideScriptを使う。POSTなのかGETなのかがポイント。

次にGETの応用

URL#HTML Object Element Name(ID)

これにイベント属性との組み合わせ。

JavaScriptなどを使った、ClientSideScriptで選択した結果を処理し、最後にFORMで送信。

ASPXやJSPなどを使えば、バインドしたHTMLタグを使える、

やり方は、さまざまあるので、基本的な事をまなんでから、何ができそうだから、何を使ってやる場合。などと、再度質問してください。

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

Q値の受け渡しについて

JavaScriptを使用しa.htmlからb.htmlへ
値の受け渡しについて分らない事があります。

やりたいことはa.html内にある
<a href="b.html">あああ</a>の「あああ」の値を
b.html内にある<INPUT>に入れたいのです。

現在記述しているコードを下記記しますので
何方かご教授お願いします。

■a.html
<html>
<a href="b.html" onclick="this.href=this.href+'?'+encodeURIComponent(this.innerHTML)">あああ</a>
</html>
■b.html
<html>
<script type="text/javascript">
query = decodeURIComponent( location.search.slice(1,1000) );
document.getElementById('in_name').value = query;
</script>
<form>
<INPUT type="text" id="in_name" name="in_name" value="">
</form>
</html>

JavaScriptを使用しa.htmlからb.htmlへ
値の受け渡しについて分らない事があります。

やりたいことはa.html内にある
<a href="b.html">あああ</a>の「あああ」の値を
b.html内にある<INPUT>に入れたいのです。

現在記述しているコードを下記記しますので
何方かご教授お願いします。

■a.html
<html>
<a href="b.html" onclick="this.href=this.href+'?'+encodeURIComponent(this.innerHTML)">あああ</a>
</html>
■b.html
<html>
<script type="text/javascript">
query = decodeURIComponent(...続きを読む

Aベストアンサー

document.getElementById('in_name').value = query;



window.onload=function(){
document.getElementById('in_name').value = query;
}

としてください

Q調べてもわからないのでこの文の意味を教えてください。 Dim a as system.Reflect

調べてもわからないのでこの文の意味を教えてください。

Dim a as system.Reflection.Assembly=system.Reflection.Assembly.GetExcutingAssembly()

Dim b as string = system.IO.Path.GetDirrectoryName(a.Location)


VB.NETを使用しています。

Aベストアンサー

Dim a as system.Reflection.Assembly=system.Reflection.Assembly.GetExcutingAssembly()
自分自身 (実行プログラム) を参照

Dim b as string = system.IO.Path.GetDirrectoryName(a.Location)
実行プログラムがあるフォルダーのパスを取得


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報