C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: VB6のコードをC#に書き換えるには。 [1]


(過去ログ 51 を表示中)

[トピック内 36 記事 (21 - 36 表示)]  << 0 | 1 >>

■27788 / inTopicNo.21)  Re[11]: VB6のコードをC#に書き換えるには。
  
□投稿者/ .SHO (36回)-(2008/11/14(Fri) 15:32:30)
> txtDisp.Text = dData1.ToString();

で、1つ目の数値を txtDisp.Text に戻してるから。
引用返信 編集キー/
■27789 / inTopicNo.22)  Re[11]: VB6のコードをC#に書き換えるには。
□投稿者/ .SHO (37回)-(2008/11/14(Fri) 15:34:48)
> +の場合、Strすると空白がつくから必要なんじゃないですかね。

VBってそうなんですか…失礼しました m(_ _)m
引用返信 編集キー/
■27792 / inTopicNo.23)  Re[1]: VB6のコードをC#に書き換えるには。
□投稿者/ みきぬ (212回)-(2008/11/14(Fri) 16:08:57)
No27767 (C#初心者 さん) に返信

最終的に、 C# で書いた電卓プログラムが完成したと判断するための拠り所はなんですか?
VB6 で書いたプログラムと、同じ動作をすればいいんですか?
それとも、日本語で書かれた仕様があって、その通りに動作する C# のプログラムを書けばいいんですか?

VB6 のプログラムを拠り所とするのであれば、それが正確に C# のコードに置き換えられているかを考えればよいでしょう。
日本語でまとめられた仕様を拠り所とするのであれば、それが正確に C# のプログラムとして記述されているかを考えればよいでしょう。
もしどちらもないのであれば…どちらでもいいので、まず拠り所となるものをきちんと用意するべきでしょう。

真っ暗闇の中をただ歩いているだけじゃ、ゴールにはたどり着けないですよ。(よほど運が良いか、天性の才能でもあれば別だけど)
進もうとする前に、準備が整っているかどうかもう一度確認したほうがいいんじゃないかなあ。
# 余計な口出しだとは自分でも思うんだけど、見てて危なっかしいので。
引用返信 編集キー/
■27800 / inTopicNo.24)  Re[11]: VB6のコードをC#に書き換えるには。
□投稿者/ dogatana (8回)-(2008/11/14(Fri) 21:44:33)
No27786 (C#初心者 さん) に返信
> ■No27784 (.SHO さん) に返信
> 一応自分なりにヒントを参考に書いたのですが、
> 1つ目の数値は記憶されるんですが、2つ目の数値を入力する時
> 1つ目の数値の続きから入力されてしまうので、どこが
> おかしいのか指摘していただけますでしょうか?

VBもC#も知らないので、個々の関数などについては何とも言えないのですが、ここで
上げられているコードは既に元のVBとifの判定の流れが変わってますよね。

ロジック(処理の流れ)も変更し、個々の処理も変更していくと収拾がつかなくなるので、
ここはみきぬさんのアドバイス
No27769 (みきぬ さん) に返信
> 方法1:機械的に VB の構文から C# の構文に翻訳していく
> 方法2:その VB のコードをいったん仕様レベルにおとし、そこから新しく C# のコードを書く
>
> お好きなほうでどうぞ。
に従われるのが良いのでは。

書き込みの内容からすると、VBプログラムの動作ロジックを完全には理解されていないと思われ、
そうであれば方法1のやり方がでしょう。これだと内容を理解しなくても、*とりあえず*動くよう
にはなると思います。

この方法が受講されている研修の意図に合っているかどうかは別問題 :p


引用返信 編集キー/
■27805 / inTopicNo.25)  Re[1]: VB6のコードをC#に書き換えるには。
□投稿者/ Jitta (538回)-(2008/11/14(Fri) 22:45:26)
Jitta さんの Web サイト
No27767 (C#初心者 さん) に返信
脳内置換、無検証です。
文法的には正しいと思います。
しかし、期待する動作を行うかどうかは、わかりません。
* cmdEnzan_Click が、どうやって呼ばれるのか、不明。
* 引用されている範囲では、SuuFlg が true になることはない。
* dData1, dData2 の型が不明(double の d?)
ご参考→ http://search.live.com/results.aspx?q=%E9%9B%BB%E5%8D%93+site%3Ablogs.wankuma.com

private void cmdEnzan_Click(int Index)
{
    // 数字キーを押した後
    if (SuuFlag == true) {
        if (EFlag == false) {
            // クリア、=キー以後初めての演算キー
            dData1 = Convert.ToInt32(txtDisplay.Text); // 1つ目数値記憶
            if (txtDisplay.Text.Chars(0) == ".") {
                txtDisplay.Text = "0" & txtDisplay.Text;
            }
            EFlag = true;
        } else {
            dData2 = Convert.ToInt32(txtDisplay.Text); // 2つ目数値記憶
            if (txtDisplay.Text.Chars(0) == ".") {
                txtDisplay.Text = "0" & txtDisplay.Text;
            }
        }
        if (Index != EQU) { // =以外
            keisan(); // 呼び出し関数
            Enzan = Index; // 演算種類記憶
            dData2 = 0;
        } else { // =のとき
            keisan();
            EFlag = false;
        }
        txtDisplay.Text = dData1.ToString().Trim(); // 結果の表示
        if (txtDisplay.Text.Chars(0) == ".") {
            txtDisplay.Text = "0" & txtDisplay.Text;
        }
    // 等号キーを押した後
    } else if (Index == EQU) {
        if (dData2 == 0) {
            dData2 = dData1;
        }
        keisan();
        txtDisplay.Text = dData1.ToString().Trim();
        EFlag = false;
        // 四則キーを押した後
    } else {
        dData1 = Convert.ToInt32(txtDisplay.Text); // 1つ目数値記憶
        dData2 = 0;
        Enzan = Index; // 演算種類記憶
        EFlag = true;
    }
    SuuFlag = False;
}

引用返信 編集キー/
■27873 / inTopicNo.26)  Re[2]: VB6のコードをC#に書き換えるには。
□投稿者/ まんごーぷりん (2回)-(2008/11/17(Mon) 09:50:38)
まんごーぷりん さんの Web サイト
その質問に回答するには、各フラグが、どういう意味を持っているのかを説明していただく必要があるんじゃないかしら?
でも、本当はフラグをなるべく使わないように書くのが良いんですけどね。

引用返信 編集キー/
■27885 / inTopicNo.27)  Re[3]: VB6のコードをC#に書き換えるには。
□投稿者/ .SHO (53回)-(2008/11/17(Mon) 11:31:04)
No27873 (まんごーぷりん さん) に返信

> でも、本当はフラグをなるべく使わないように書くのが良いんですけどね。

ですね。
そういう意味で、まず最初のVBの処理自体を見直す方が良いのですが。
そうすることで、VBプログラムの動作ロジックの理解も深まるでしょうし。

って、言ってるうちに、もう最初の質問者さんの研修は終わっちゃったかも
知れないですね。。。
引用返信 編集キー/
■27902 / inTopicNo.28)  Re[4]: VB6のコードをC#に書き換えるには。
□投稿者/ C#初心者 (20回)-(2008/11/17(Mon) 15:32:00)
No27885 (.SHO さん) に返信
> ■No27873 (まんごーぷりん さん) に返信

みなさん
沢山のアドバイスありがとうございました!
皆様のアドバイスのお陰で何とか電卓が出来そうです。

最後に1つだけ質問なのですが、
減算の計算で「-」になる計算をしたら、数字の前に
「-」がくるのではなく、数字の後ろに「-」が来てしまうので、
VBだったらRight関数で出来そうなんですが、
C#の場合だとRight関数がないので、
Right関数の代わりになるのは何か教えて
いただければと思います。
引用返信 編集キー/
■27905 / inTopicNo.29)  Re[5]: VB6のコードをC#に書き換えるには。
□投稿者/ .SHO (57回)-(2008/11/17(Mon) 15:48:08)
2008/11/17(Mon) 15:49:16 編集(投稿者)

No27902 (C#初心者 さん) に返信

> Right関数の代わりになるのは何か教えて
> いただければと思います。

string post = "123-";
int l = post.Length;
string pre = post.Substring( l - 1 ) + post.Substring( 0, l - 1 );

必ず最後の1文字が '-' だとわかっているなら
string ans = "-" + post.Substring( post.Length - 1 );
でもいいかも?
この場合、Right関数というよりは、Left関数?
引用返信 編集キー/
■27906 / inTopicNo.30)  Re[5]: VB6のコードをC#に書き換えるには。
□投稿者/ みきぬ (215回)-(2008/11/17(Mon) 15:52:49)
> 減算の計算で「-」になる計算をしたら、数字の前に
> 「-」がくるのではなく、数字の後ろに「-」が来てしまうので、

そういう電卓もあるから別にいいじゃん…だめ?(・ω・)

# いや加工するのはいいんだけど、そこからさらに計算しても果たして大丈夫なのだろうかという疑問が
引用返信 編集キー/
■27907 / inTopicNo.31)  Re[6]: VB6のコードをC#に書き換えるには。
□投稿者/ C#初心者 (22回)-(2008/11/17(Mon) 15:53:13)
> 必ず最後の1文字が '-' だとわかっているなら
> string ans = "-" + post.Substring( post.Length - 1 );
> でもいいかも?
> この場合、Right関数というよりは、Left関数?

'-'になると必ず最後の1文字が'-'になるので、
string ans = "-" + post.Substring( post.Length - 1 );
こちらをまんま写しても大丈夫ですか?
引用返信 編集キー/
■27908 / inTopicNo.32)  Re[7]: VB6のコードをC#に書き換えるには。
□投稿者/ .SHO (58回)-(2008/11/17(Mon) 15:55:41)
No27907 (C#初心者 さん) に返信

> '-'になると必ず最後の1文字が'-'になるので、
> string ans = "-" + post.Substring( post.Length - 1 );
> こちらをまんま写しても大丈夫ですか?

やってみなよorz
引用返信 編集キー/
■27909 / inTopicNo.33)  Re[7]: VB6のコードをC#に書き換えるには。
□投稿者/ まんごーぷりん (8回)-(2008/11/17(Mon) 16:02:47)
まんごーぷりん さんの Web サイト
No27907 (C#初心者 さん) に返信
>>必ず最後の1文字が '-' だとわかっているなら
>>string ans = "-" + post.Substring( post.Length - 1 );
>>でもいいかも?
>>この場合、Right関数というよりは、Left関数?
>
> '-'になると必ず最後の1文字が'-'になるので、
> string ans = "-" + post.Substring( post.Length - 1 );
> こちらをまんま写しても大丈夫ですか?

ん?
最後の - だけを取り除いて、先頭に - を持ってきたいってことですよね?
引数が 1 つだけの場合、startIndex を表わす訳ですが・・・

まんま写すという表現は、あまり良くありませんよ?

取り除くだけなら、post.Replace("-", "") でもいいかもしれませんね。
処理が高コストですけれども。

Substring, Replace メソッドがどういう意味を持つのかも、調べてみて下さいね。
引用返信 編集キー/
■27910 / inTopicNo.34)  Re[8]: VB6のコードをC#に書き換えるには。
□投稿者/ .SHO (59回)-(2008/11/17(Mon) 16:07:57)
No27909 (まんごーぷりん さん) に返信

>>'-'になると必ず最後の1文字が'-'になるので、
>>string ans = "-" + post.Substring( post.Length - 1 );
>>こちらをまんま写しても大丈夫ですか?
>
> ん?
> 最後の - だけを取り除いて、先頭に - を持ってきたいってことですよね?
> 引数が 1 つだけの場合、startIndex を表わす訳ですが・・・

ごめんなさい。
post.Substring( 0, post.Length - 1 );
です^^;

確かに
"-" + post.Replace("-", "");
でもいいですね。

まぁ、少しは自分で勉強してくださいってことで…(笑)


引用返信 編集キー/
■27915 / inTopicNo.35)  Re[9]: VB6のコードをC#に書き換えるには。
□投稿者/ C#初心者 (23回)-(2008/11/17(Mon) 16:59:09)
No27910 (.SHO さん) に返信

確かに自分でやならきゃですよね(汗)
あとは、キーボードで入力できるようにするだけで
完成にします。
引用返信 編集キー/
■27987 / inTopicNo.36)  Re[6]: VB6のコードをC#に書き換えるには。
□投稿者/ C#初心者 (24回)-(2008/11/18(Tue) 14:58:32)
皆様のお陰で無事完成させることが出来ました。
本当にありがとうございました。
解決済み
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -