エラーについて
| 投稿日 | : 2007/11/03 14:17 |
| 投稿者 | : メチヨ |
| 参照先 | : |
| 件名 | : Re: エラーについて |
| 投稿日 | : 2008/09/22 13:23 |
| 投稿者 | : そにっく |
| 参照先 | : |
いまさらながら私と同じ症状のように思われたので返信させていただきます。
.netからintegerが16ビットから32ビットへ、longが32ビットから64ビットに拡張されました。
そのため、blogの宣言を以下のように修正する必要があります。
Private Declare Function AquesTalkDa_PlaySync Lib "AquesTalkDa.dll" (ByVal koe As String, ByVal iSpeed As Short) As Integer
Private Declare Function AquesTalkDa_Create Lib "AquesTalkDa.dll" () As Integer
Private Declare Function AquesTalkDa_Play Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer, ByVal koe As String, ByVal iSpeed As Short, ByVal hWnd As Integer, ByVal msg As Integer, ByVal dwUser As Integer) As Short
Private Declare Sub AquesTalkDa_Stop Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer)
Private Declare Sub AquesTalkDa_Release Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer)
Private Declare Function AquesTalkDa_IsPlay Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer) As Short
integerをshort(.netでは16ビット),longをintegerに変更することで正しいエラーが帰ってくると思います。
それでは失礼いたします。
.netからintegerが16ビットから32ビットへ、longが32ビットから64ビットに拡張されました。
そのため、blogの宣言を以下のように修正する必要があります。
Private Declare Function AquesTalkDa_PlaySync Lib "AquesTalkDa.dll" (ByVal koe As String, ByVal iSpeed As Short) As Integer
Private Declare Function AquesTalkDa_Create Lib "AquesTalkDa.dll" () As Integer
Private Declare Function AquesTalkDa_Play Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer, ByVal koe As String, ByVal iSpeed As Short, ByVal hWnd As Integer, ByVal msg As Integer, ByVal dwUser As Integer) As Short
Private Declare Sub AquesTalkDa_Stop Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer)
Private Declare Sub AquesTalkDa_Release Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer)
Private Declare Function AquesTalkDa_IsPlay Lib "AquesTalkDa.dll" (ByVal H_AQTKDA As Integer) As Short
integerをshort(.netでは16ビット),longをintegerに変更することで正しいエラーが帰ってくると思います。
それでは失礼いたします。
blogを参考にVB2005で以下のように記述しました。
Private Declare Function AquesTalkDa_PlaySync Lib "AquesTalkDa.dll" (ByVal koe As String, ByVal iSpeed As Integer) As Long
Private Sub CommandButton1_Click()
If AquesTalkDa_PlaySync("てすと", 100) <> 0 Then
MsgBox "error"
End If
End Sub
音声は正しく発音するのですが発音後にメッセージボックスで"error"と表示されます。
エラーの内容を調べようと、次のようにしました。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ATErrorCode As String
ATErrorCode = AquesTalkDa_PlaySync("てすと", 100)
If ATErrorCode <> 0 Then
TextBox1.Text = ATErrorCode
End If
End Sub
すると、TextBox1に
851056359636992
と表示されます。
これはどういったエラーなのでしょうか?
他に、AquesTalkDa_PlaySync("A", 100)
とすると(ひらがな以外)
851056359637097
が表示されます。
AquesTalkDa_PlaySync("", 100)
とすると(空文字)
851056359637102
が表示されます。
初心者のため的外れなことを言っていたら申し訳ありません。