none
Windows7上でのVB6とVC6の連携 RRS feed

  • 質問

  • お世話になります。

    古いツールなのですが、VC++6で作成したDLLを、VB6のフォームアプリで呼び出し、文字列を受け渡して、VB6で表示させようとしています。

    データは受け渡っているようなのですが、VB6のMsgboxで表示させようとすると、6桁のものが4桁になってしまいます。

    ブレークポイントを入れて、デバッグしながら表示させると、ちゃんと6桁表示されます。

    ソースコードは以下になります。

    [VC6]

    __declspec(dllexport) CHAR* _stdcall iNo(CHAR* eNo);        
    CHAR* _stdcall iNo(CHAR* eNo)                              
    {

        CHAR            UkeMsg[96];
        CHAR            SndTxt[96];

        memset(&UkeMsg, 0, sizeof(UkeMsg));

        strcpy(SndTxt, eNo);                          

        if (strcmp(SndTxt, "0000") == 0)  strncpy(UkeMsg, "A00000", 6);
        else if (strcmp(SndTxt, "1000") == 0) strncpy(UkeMsg, "B00000", 6);
        else if (strcmp(SndTxt, "2000") == 0) strncpy(UkeMsg, "C00000", 6);


    return(UkeMsg);
    }

    [VB6]

    Private Declare Function iNo Lib "renkei_DLL" (ByVal eNo As String) As String

    Private Sub Command1_Click()
        Dim ccc As String
        ccc = iNo("1000")
        MsgBox (ccc)
    End Sub

    この"ccc"が、本来6桁なのが、4桁になってしまうというわけです。

    環境はWindows7です。(あまり関係ないかもしれませんが)

    それではよろしくお願いいたします。

    2013年9月13日 18:23

回答