2013-01-09 16 views
6

W porządku, jestem całkowicie nowy w DWScript. Na razie jestem zafascynowany jego możliwościami, ale mimo tego, że czytałem wszystkie strony w załączonej wiki i pytania/odpowiedzi tutaj, nadal nie mogę znaleźć sposobu na wyodrębnienie wyniku po wywołaniu funkcji z Delphi w ten sposób:DWScript: jak uzyskać wynik po wywołaniu

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

, a następnie utknąłem: exec.result.toString nic mi nie daje. Tak długo, jak widzę, nie mam Result w obiekcie exec i dlatego podczas usuwania elementów ze stosu skryptów wynik jest usuwany i tracony. Proszę doradzić mi, jaki jest właściwy sposób wykonania tego prostego zadania?

+0

Witamy w przepełnieniu stosu. Dobrze, że znalazłeś odpowiedź na swoje pytanie, ale proszę wpisz odpowiedź w sekcji * odpowiedź * poniżej. –

+0

Rozumiem, ma to sens. Dzięki. – Nedko

Odpowiedz

7

Edit:

Jak Eric Grange podano w komentarzach poniżej najlepszą praktyką jest tak:

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

Oryginalny odpowiedź:

Dobrze znalazłem odpowiedź - brakujący wynik znajduje się w obiekcie data zwróconego obiektu:

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

Jak można zauważyć, prawdziwa dokumentacja leży w dosłownie setkach jednostkowych przypadków testowych, które Eric utworzył w folderze Test. Z początku może wydawać się to zniechęcające, ale każdy przypadek jest dość prosty i często wskaże ci drogę. –

+2

Dla typów prostych dostępne są metody Value i ValueAsXxx. Tablica Data [] służy do bardziej złożonych przypadków lub gdy chcesz uzyskać bezpośredni dostęp do wariantów. –

+0

Btw, jest to również udokumentowane w http://code.google.com/p/dwscript/wiki/FirstSteps, w akapicie "Funkcje" –

Powiązane problemy