none
String^型引数を使用した関数呼び出しについて RRS feed

  • 質問

  • String型の引数を与えて関数を呼び出していますが、処理結果を引き渡すことができません。

    解決策のご教授をお願いします。

    プログラムは簡単にモデル化すると次の通りです。

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

       String^ strDRV = "DRV1";
       String^ strPWD = "PWD1";
       int iResult;  

       iResult = USBPWDGET(textBox1->Text,(String^)strPWD);
       char chpos[4];
       _itoa_s(int(iResult),chpos,10);
       textBox2->Text = gcnew String(chpos);
       textBox3->Text = strPWD; <-----結果として「PWD1」が表示されます。
       }                          なぜ「12345678901234567890」が表示できないのでしょうか?                   

    //--------------------------------------------------------------------------- 

    int  USBPWDGET   (String^ argDRV,     String^ argPWD)      {
      argPWD = "12345678901234567890";  
      return 0;
      }

    関数 USBPWDGET   の結果を引き渡すにはどうすればよろしいのでしょうか?

    Stringの扱いがよくわかっていない初心者です。


     

    2007年1月24日 2:10

すべての返信

  • C言語で、
    #include <stdio.h>
    
    void foo(int n) { n = 10; }
    
    int main(void){
        int n = 0;
        foo(n);
        printf("n = %d\n", n);
        return 0;
    }
    が 10と表示されないのと同じで、値渡しになっているからです。
    参照渡しで渡すには % を付けてください。

    int  USBPWDGET   (String^ argDRV,     String^ argPWD)

    ↓↓↓
    int  USBPWDGET   (String^ argDRV,     String^% argPWD)


    類似スレ:DataTableやDataSetの参照渡しをする方法について
    http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=815994&SiteID=7
    2007年1月24日 2:22
  • 蒼の洞窟さん

    解決しました。ありがとうございました。

    あつかましいようですが、関数呼び出しが

       iResult = USBPWDGET(textBox1->Text,textBox3->Text);

    のように、textBoxの場合も同じなのでしょうか?

    2007年1月24日 3:47
  •  ELF2106 さんからの引用

    あつかましいようですが、関数呼び出しが

       iResult = USBPWDGET(textBox1->Text,textBox3->Text);

    のように、textBoxの場合も同じなのでしょうか?


    実際にやってみてはどうでしょうか?
    試せる環境がないのでこちらでは確認できませんけど、予想としては無理な気がする。
    (TextBoxクラスのText(get)プロパティは参照ではなく値を返しているから。)

    できない場合はしょうがないけど、分けるしかないでしょうね。
    2007年1月24日 5:21
  • 蒼の洞窟様

    予想通りダメでした。分けることにしました。

    色々ありがとうございました。

     

    2007年1月24日 6:14