Newsgroup: it.comp.lang.visual-basic
Titolo: Applicazione telefonica

Salve ragazzi,
incuriosito da un articolo sul riconoscimento vocale nella telefonia
pubblicato su IoProgrammo, ho deciso di realizzare l'applicazione di esempio
contenuta nell'articolo stesso.
Aggiunti i controlli necessari, "copiato" pari pari il codice presente
nell'articolo ogni volta che lancio il programma sia in debug che come
eseguibile un messaggio di errore mi avverte che è stata esaurita la memoria
(errore di run time 7). Ho installato il programma su macchine diverse e con
diverse configurazioni, niente.... Sempre lo stesso errore!!
C'è qualcuno così gentile da indicarmi, leggendo il listao, se e dove il prg
va in loop?
Grazie, Enrico.
------------------------------------
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
phone1.Initialized = 2
phone1.AnswerAfterRings = 1
phone1.CallDialog
End Sub
Private Sub phone1_DoPhoneCall(ByVal lineID As Long)
Dim RESULT As Long
Dim S As String
Dim Materiaselezionata As String
Dim Frase As String
Dim materianonriconosciuta As String
Frase = "Benvenuto nel servizio prenotazione esami"
materianonriconosciuta = "Materia non riconosciuta. Premi 1 per informatica.
2 per italiano."
On Error Resume Next
phone1.GrammarFromString lineID, "[Prompts]" + vbNewLine + "Main=" + Frase +
vbNewLine + "Main.2=" + "premi 1 per informatica. 2 per italiano." +
vbNewLine + "Unrecognized=" + materianonriconosciuta + vbNewLine +
"[DTMFString]" + vbNewLine + "Count=1" + vbNewLine + "2=2" + vbNewLine +
"[Lists]" + vbNewLine + "=informatica" + vbNewLine + "=italiano" +
vbNewLine, results, S
If (S = "") Then
    GoTo fine
End If
Select Case S
    Case "1"
        Materiaselezionata = "informatica"
    Case "2"
        Materiaselezionata = "italiano"
    Case Else
        Materiaselezionata = S
End Select
phone1.Speak lineID, "Hai selezionato." + Materiaselezionata
Do
 S = LEGGINUMERO(lineID, 5, "Inserisci il numero di matricola", "riprova")
 If (S = "") Then
    GoTo fine
 End If
phone1.Speak lineID, "Il tuo numero matricola è"
phone1.Speak lineID, S
phone1.YesNoFromString lineID, "[Prompts]" + vbNewLine + "Main=è corretto?"
+ vbNewLine + "[Setting]" + vbNewLine + "CanGoBack=1" + vbNewLine, RESULT, S
    If (RESULT < 0) Then GoTo fine
    Loop Until RESULT = 1
fine:
phone1.Speak lineID, "Grazie"
End Sub
'***********
Private Function LEGGINUMERO(lineID As Long, numerocifre As Integer, Main As
String, main2 As String) As String
Dim RESULT As Long
Dim S As String
Dim TSTR As String
Dim NUMERI As String
NUMERI = ""
For I = 1 To numerocifre
   NUMERI = NUMERI + "<0..9>"""""
Next I
phone1.GrammarFromString LINED, "[prompts]" + vbNewLine + "MAIN=" + Main +
vbNewLine + "MAIN.2=" + main2 + vbNewLine + "[DTMFSTRING]" + vbNewLine +
"COUNT=" + Str(numerocifre) + vbNewLine + "0=0" + vbNewLine + "1=1" +
vbNewLine + "2=2" + vbNewLine + "3=3" + vbNewLine + "4=4" + vbNewLine +
"5=5" + vbNewLine + "6=6" + vbNewLine + "7=7" + vbNewLine + "8=8" +
vbNewLine + "9=9" + vbNewLine + "[<MYGRAMMAR>]" + vbNewLine + "<MYGRAMMAR>="
+ NUMERI + vbNewLine, RESULT, S
LEGGINUMERO = ""
TSTR = S
For I = 1 To Len(TSTR)
   LEGGINUMERO = LEGGINUMERO + Mid(TSTR, I, 1) + ""
Next I
End Function
Private Function LEGGIMESSAGGIDOCENTE(Materiaselezionata As String)
Dim C As String
Dim S As String
On Error Resume Next
Open App.Path + "\" + Materiaselezionata + ".TXT" For Input As 1
Do While Not EOF(1)
  C = Input(1, #1)
  S = S + C .
Loop
Close #1 'CHIUDE IL FILE.
LEGGIMESSAGGIDOCENTE = S
End Function
------------------------------------------------
Dim VbEnry As Enrico
e-mail : 
vbe...@supereva.it
ICQ: 93357350
------------------------------------------------

Che cos'è l'oggetto Phone ?   un ocx o dll ?
Potresti passarmelo (sempre che sia freeware) ? ...
Grazie

 wrote in message
8v3b6u$6l6$1...@fe2.cs.interbusiness.it...
