Newsgroup: it.comp.lang.visual-basic
Titolo: Errore con New

Ciao,
utilizzando esempi riportati su Internet per la gestione di Microsoft Agent
con VB6 e XP, come questo riportato qui sotto,
Dim WithEvents MyAgent as Agent
Dim Genie as IAgentCtlCharacterEx
Sub Form Load
    set MyAgent = New Agent
etc. etc.
quando lo lancio ottengo l'errore
Utilizzo non valido della parola chiave New
Perché ?

 Perché ?
Istruzione Set
Assegna un riferimento a un oggetto a una variabile o a una proprietà.
Sintassi
Set variabileoggetto = {[New] espressioneoggetto | Nothing}
La sintassi dell'istruzione Set è composta dalle seguenti parti:
      Parte Descrizione
      variabileoggetto Obbligatoria. Nome della variabile o proprietà,
espresso in base alle convenzioni di denominazione standard delle variabili.
      New Facoltativa. New viene in genere utilizzata nelle dichiarazioni
per consentire la creazione di oggetti in modo implicito. Quando si utilizza
New in combinazione con Set, viene creata una nuova istanza della classe. Se
variabileoggetto contiene un riferimento a un oggetto, il riferimento viene
liberato quando ne viene assegnato uno nuovo. La parola chiave New non può
essere utilizzata per dichiarare variabili di qualsiasi tipo di dati
intrinseco e per creare oggetti dipendenti.


Io ho semplicemnete seguito le istruzioni riportate anche nella
documentazione di Microsoft Speech SDK, ma anche su molti siti dedicati a
Visual Basic. Non credo si tratti di un banale errore di sintassi.

Emiliano ha scritto:

Non conosco MS Agent.
Deve essere forse dichiarato fra i riferimenti? L'hai fatto?
Pare che il tipo/oggetto Agent non sia noto.


Certamente, devi aggiungere Microsoft Agent 2.0
Quelle istruzioni, di cui riportavo un esempio, servono per creare l'oggetto
in runtime, senza doverlo aggiungere direttamente sul form

Emiliano ha scritto:

Ho provato (VB6 SP5, XP Pro) col tuo identico codice. Non ottengo alcun
errore...


Vedi?
Anch'io ho SP5
Chiaramente non hai trascinato il controllo sul form, giusto?

Emiliano ha scritto:

Allora, vediamo di capirci (mantengo la premessa che non so cosa sia/faccia
MS Agent):
Ho riprovato (sempre con XP Pro, VB6 SP5):
1)
- Ho dichiarato fra i riferimenti MS Agent Control 2.0 (Non Agent Server...)
- Il codice che segue (il tuo) non segnala errori.
2)
- Mantenendo le condizioni precedenti:
- Ho aggiunto ai componenti MS Agent Control 2.0
- Sia creando il controllo MS Agent 2.0 sul form che no, il codice che segue
(il tuo) non segnala errori:
Dim WithEvents MyAgent As Agent
Dim Genie As IAgentCtlCharacterEx
Private Sub Form_Load()
    Set MyAgent = New Agent
End Sub
Ora, per favore, cerca di spiegare esattamente quali sono le tue varie
azioni, in modo da poterle riprodurre.

 - Il codice che segue (il tuo) non segnala errori.
a livello di modulo di form sezione generale dichiaro
Dim WithEvents MyAgent As Agent
Dim Genie As IAgentCtlCharacterEx
Private Sub Form_Load()
    Set MyAgent = New Agent
End Sub
lancio il programma e ottengo l'errore
"utilizzo non valido della parola chiave New"
p.s.: Microsoft Agent serve per dare comandi vocali attraverso microfono
all'assistente "Genie" (o altro)
e fargli rispondere sempre vocalmente ed eseguire determinate azioni.
Mettendo il controllo sul form funziona tutto OK, ma siccome la tecnica più
efficace sarebbe quella descritta vorrei capire perché non mi funziona

 "utilizzo non valido della parola chiave New"
Stessa situazione. Nessun errore.
Unica differenza (che potrebbe essere fondamentale):
Percorso: C:\Windows\msagent\agentctl.dll
Dimensioni: 204.288 bytes
Versione: 2.0.0.3402

 Versione: 2.0.0.3402
La stessa dll la trovo sia in System32, sia in msagent,
ma mi sembrano identiche: unica, piccola differenza
la versione che nel mio caso è 2.0.0.3422
e le dimensioni 204.800 bytes
creata il 31/08/2001

 creata il 31/08/2001
Uguale
Non so che dire. Prova a mettere fra i riferimenti quella di msagent, giusto
per toglierti il dubbio :-((

Grazie mille e Buon Anno


Possiamo fare il confronto dei riferimenti?
Poi non ti disturberò più
Ciao

Emiliano ha scritto:

Emiliano, non si tratta di disturbare. L'unico riferimento che ho aggiunto è
quello che tu hai indicato e del quale, ormai, sappiamo tutto, ovvero che è
identico. Spiegati meglio.

> Spiegati meglio.
Quando scrivo l'istruzione
Set MyAgent=New
appare la casella di riepilogo con la lista delle opzioni inseribili
e tra queste non c'è Agent, che secondo me dovrebbe esserci.
Se a te appare nell'elenco probabilmente hai un riferimento che io non ho,
oltre a quello.
Intendo dire l'elenco delle voci spuntate nella lista che si ottiene quando
si seleziona la voce progetto/riferimenti

 si seleziona la voce progetto/riferimenti
Eccole (ma, tranne Agent, sono quelle di default):
Visual Basic For Applications (...\MSVBVM60.DLL)
Visual Basic Runtime Objects and Procedures (...\MSVBVM60.DLL\3)
Visual Basic Objects and Procedures (...\VB6.OLB)
OLE Automation (...\STDOLE.TLB)
e poi:
Microsoft Agent Control 2.0 (...\AGENTCTL.DLL)