2013-01-09 10 views
6

OK, sono totalmente nuovo in DWScript. Per ora sono affascinato dalle sue capacità, ma sebbene legga tutte le pagine del wiki e domande/risposte qui non riesco ancora a trovare il modo di estrarre il risultato dopo che una funzione è stata chiamata da Delphi in questo modo:DWScript: come ottengo risultato dopo chiamata

func := m_dwsExec.info.Func[funcname]; 
    func.call(params); 

e poi sono bloccato: exec.result.toString non mi dà nulla. Finché vedo che non ho Result nell'oggetto exec ed è per questo che quando si eliminano gli elementi dallo stack di script il risultato viene rimosso e perso. Per favore mi consigli su qual è il modo corretto per fare questo semplice compito?

+0

Benvenuti in Stack Overflow. È fantastico che tu abbia trovato la risposta alla tua domanda, ma per favore scrivi la risposta nella sezione * risposta *, di seguito. –

+0

Vedo, ha senso. Grazie. – Nedko

risposta

7

Edit:

Come Eric Grange ha dichiarato nei commenti qui sotto la migliore pratica è come questo:

func := m_dwsExec.info.Func[funcname]; 
    info := func.call(params); 
    funcresult := info.ValueAsString; //or Value, ValueAsInteger, etc. 

risposta originale:

Beh ho trovato la risposta - il risultato mancante si trova nella proprietà data dell'oggetto IInfo restituito:

func := m_dwsExec.info.Func[funcname]; 
    info := func.call(params); 
    funcresult := info.data[0] 
+2

Come si può vedere, la vera documentazione si trova in centinaia di casi di test unitari che Eric ha creato nella cartella Test. All'inizio può sembrare scoraggiante, ma ogni caso è abbastanza semplice e spesso ti mostrerà la strada. –

+2

Per i tipi semplici sono disponibili metodi Value e ValueAsXxx. L'array Data [] è per casi più complessi o quando si desidera accedere direttamente alle varianti. –

+0

Btw, è anche documentato in http://code.google.com/p/dwscript/wiki/FirstSteps, nel paragrafo "Funzioni" –

Problemi correlati