#lang racket/base
(require ffi/com)
(let ([com (com-create-instance "MSScriptControl.ScriptControl")])
   (com-set-property! com "Language" "VBScript")
   (com-invoke com "AddCode" "Function Test() \n Test=false \n End Function")
   (com-invoke (com-get-property com "CodeObject") "Test"))

Returns #t 
(Racket 6.0 win32) If I send to COM, all is ok:
(let ([com (com-create-instance "MSScriptControl.ScriptControl")])
   (com-set-property! com "Language" "VBScript")
   (com-invoke com "AddCode" "Function Test(x) \n If x then \n Test = 1 \n else 
\n Test =2 \n End if \n End Function")
   (com-invoke (com-get-property com "CodeObject") "Test" #f))  ; => 2

(let ([com (com-create-instance "MSScriptControl.ScriptControl")])
   (com-set-property! com "Language" "VBScript")
   (com-invoke com "AddCode" "Function Test(x) \n If x then \n Test = 1 \n else 
\n Test =2 \n End if \n End Function")
   (com-invoke (com-get-property com "CodeObject") "Test" #t))  ; => 1

And even 

(let ([com (com-create-instance "MSScriptControl.ScriptControl")])
   (com-set-property! com "Language" "VBScript")
   (com-invoke com "AddCode" "Function Test(x) \n If x = false then \n Test = 
false \n End if \n End Function")
   (com-invoke (com-get-property com "CodeObject") "Test" #f))
; => #t

(let ([com (com-create-instance "MSScriptControl.ScriptControl")])
    (com-set-property! com "Language" "VBScript")
    (com-invoke com "AddCode" "Function Test(x) \n If x = false then \n Test = 
x \n End if \n End Function")
    (com-invoke (com-get-property com "CodeObject") "Test" #f))
; => #f
-- 
Roman Klochkov
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to