トップページ > 過去ログ > 記事閲覧
エラーについて
日時: 2007/11/03 14:17
名前: メチヨ

はじめまして、メチヨと申します。

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
が表示されます。

初心者のため的外れなことを言っていたら申し訳ありません。

Page: 1 |

Re: エラーについて ( No.1 )
日時: 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に変更することで正しいエラーが帰ってくると思います。

それでは失礼いたします。

Page: 1 |