Newsgroup: it.comp.lang.c++
Titolo: OCX e Scripting

Salve a tutti, vi leggo da molto ma non ho quasi mai avuto la necessità 
di scrivere. 
Ora ho un problema apparentemente banale che non riesco a risolvere.
Premetto che utilizzo il Borland c++ Builder 5
Vorrei utilizzare il componente Microsoft MSSCRIPT.OCX in una mia 
applicazione. 
La documentazione che ho trovato è tutta relativa al VB, comunque non è 
un grosso male. 
Ho importato l'OCX e ho generato tutti i file di contorno che servono per 
utilizzarlo. 
Il componente ha lo scopo di eseguire un linguaggio di scripting inserito 
dall'utente in runtime, 
interagendo con l'applicazione che contiene l'interprete. (VbScript - 
Javascript)
Fino alle funzioni base tutto OK. 
Però nella documentazione dice che il componente può interagire con altri 
ActiveX, 
passandogli l'oggetto con una specifica funzione. (AddObject)
Se lo faccio da VB funziona!
Se lo faccio dal C non funziona! 
Il problema secondo me è il modo in cui gli passo l'oggetto, ho provato 
in molti modi. 
QUalcuno di voi ha qualche idea.... 
Ecco il codice... (Che funziona!)
    AnsiString Script;
    wchar_t *str;
    AnsiString errore;
    // Leggo il codice scritto dall'utente in un Memo	
    Script=Memo1->Lines->GetText();
    // Lo converto in un formato appetibile per il componente
    str=(wchar_t*)malloc(Script.WideCharBufSize()*sizeof(wchar_t));
    // Imposto alcuni parametri
    SC1->AllowUI=true;
    SC1->Language="VBScript";
    // Eseguo lo script. 
    SC1->ExecuteStatement( Script.WideChar( str,Script.WideCharBufSize() 
) );
    // Stampo eventuali messaggi di errore.
    errore=SC1->Error->Description;
    Application->MessageBoxA(errore.c_str(),"Errore",0);
Ecco il codice che non funziona:
    AnsiString Script;
    wchar_t *str;
    AnsiString errore;
    // Leggo il codice scritto dall'utente in un Memo	
    Script=Memo1->Lines->GetText();
    // Lo converto in un formato appetibile per il componente
    str=(wchar_t*)malloc(Script.WideCharBufSize()*sizeof(wchar_t));
    // Passo il mio OGGETTO activeX al componente e gli dico che dal 
linguaggio di scripting tale oggetto 
    // deve chiamarsi "OGGETTO"
    SC1->AddObject(L"Oggetto",Oggetto->DefaultDispatch,true);
    // Imposto alcuni parametri
    SC1->AllowUI=true;
    SC1->Language="VBScript";
    // Eseguo lo script. 
    SC1->ExecuteStatement( Script.WideChar( str,Script.WideCharBufSize() 
) );
    // Stampo eventuali messaggi di errore.
    errore=SC1->Error->Description;
    Application->MessageBoxA(errore.c_str(),"Errore",0);
Se nello script faccio riferimento al mio oggetto passato, 
l'interprete mi dice che l'oggetto "OGGETTO" o non esiste o non contiene 
il parametro di mio interesse. 
AIUTO... 
Se avete bisogno dell'OCX potete scaricarlo da: 
http://www.pp-soft.com/download/ScriptControl.zip
 gli esempi in VB
http://www.pp-soft.com/download/Scripting.zip
 l'OCX
Grazie a tutti quelli che vorranno aiutarmi
Paolo Possanzini

Ciao,
Questo newsgroup si occupa del linguaggio C++ in quanto tale, e non di
aspetti specifici di particolari implementazioni. Per questo non e' il
posto piu' adatto per porre domande specifiche come la tua.
Potresti avere piu' fortuna su uno dei seguenti gruppi:
Per Win32 (95, 98, NT): it.comp.programmare.win32
Per Dos/Win 3.x: it.comp.os.dos
Per Linux:      it.comp.os.linux.development
Per C++Builder: i gruppi borland.public.cppbuilder.*, disponibili sul
                server 
newsgroups.borland.com
 (prevalentemente in 
                inglese, ma si puo' postare anche in italiano)
Grazie,
Nicola Musatti

> 
Grazie. Scusate.