"Type Mismatch" error upon slide timeout

Erin erin.siebert at gmail.com
Wed Sep 26 18:47:24 UTC 2012


David,
Thank you very much for the help and the detailed explanation about type. 
 I had never been exposed to programming before using E-Prime, so the 
explanation is very helpful.  Thanks again!!

Erin




On Tuesday, September 25, 2012 3:48:33 PM UTC-4, McFarlane, David wrote:
>
> Erin, 
>
> Sigh.  Please, please, please folks:  (1) Do *not* apply any 
> formatting to text in your posts, it makes it illegible in some 
> e-mail readers.  Just use plain text.  (2) OTOH, *do* indent your 
> code fragments for readability, e.g., 
>
>      If Stimulus.RESP = 1 Then 
>          nPoints = nPoints + 1 
>      Else 
>          nPoints = nPoints + 0 
>      End If 
>      c.SetAttrib "CurrentPoints", nPoints 
>
> Now, to start with, why in the world would you have a line like 
>
>      nPoints = nPoints + 0 
>
> which produces absolutely no effect?!  The following simplified code 
> would do the same: 
>
>      If (Stimulus.RESP = 1) Then nPoints = nPoints + 1 
>      c.SetAttrib "CurrentPoints", nPoints 
>
> Now, to your problem.  The RESP property of Stimulus has type String, 
> not Integer.  Because VBA/E-Basic, when possible, does automatic type 
> conversion (which just allows programmers to get sloppy), that works 
> fine as long as RESP happens to contain text that will convert to an 
> integer.  But when you get no response, RESP contains the null sting 
> "", and that does *not* convert to an integer.  Thus, the "Type 
> Mismatch" error, easily understood by those of us who grew up with 
> proper strongly-typed languages (e.g., Fortran, Pascal, C). 
>
> The solution?  Here are better tests for *presence* of a response: 
>      - If (x.RESP <> "") ... 
>      - If (Len(x.RESP) > 0) ...,  or,  If Len(x.RESP) ... 
>      - If (x.RTTime <> 0)  ...,  or,  If (x.RTTime) ... 
>      - If (x.InputMasks(1).Count > 0) ..., 
>        or,  If x.InputMasks(1).Count ...  (but only for given mask) 
>
> Simply invert these to make tests for *absence* of a response.  And 
> as indicated by these examples, because VBA/E-Basic treats 0 as False 
> and any non-0 value as True, in some cases you need not make the 
> comparison test explicit (although most users may find that 
> discomforting).  (I used to also include the test "If (x.RT) ...", 
> but I recently discovered that, in the unlikely case that RTTime = 
> OnsetTime, RT would be 0 even with a response.) 
>
> So in your case, this comes down to just, e.g., 
>
>      If Stimulus.RTTime Then nPoints = nPoints + 1 
>      c.SetAttrib "CurrentPoints", nPoints 
>
> ----- 
> David McFarlane 
> E-Prime training 
> online:  http://psychology.msu.edu/Workshops_Courses/eprime.aspx 
> Twitter:  @EPrimeMaster (https://twitter.com/EPrimeMaster) 
>
> /---- 
> Stock reminder:  1) I do not work for PST.  2) PST's trained staff 
> take any and all questions at 
> http://support.pstnet.com/e%2Dprime/support/login.asp , and they 
> strive to respond to all requests in 24-48 hours -- this is pretty 
> much their substitute for proper documentation, so make full use of 
> it.  3) In addition, PST takes questions at their Facebook page 
> (http://www.facebook.com/pages/Psychology-Software-Tools-Inc/241802160683 
> ), and offers several instructional videos there and on their YouTube 
> channel (http://www.youtube.com/user/PSTNET ) (no Twitter feed yet, 
> though).  4) If you do get an answer from PST staff, please extend 
> the courtesy of posting their reply back here for the sake of others. 
> \---- 
>
>
> At 9/25/2012 03:17 PM Tuesday, Erin wrote: 
> >I have an experiment where the subject has 3 seconds to make a 
> >response each trial, after which the trial times out.  On the 
> >Feedback slide, I want to display the number of trials completed, 
> >not counting trials that timed out. 
> > 
> >To do this, I added an inline to my experiemnt. I noticed in my data 
> >output that when Stimulus.RESP = 1, the trial has been completed. 
> >So, this is the inline text I used: 
> > 
> >If Stimulus.RESP = 1 Then 
> >nPoints = nPoints + 1 
> >Else 
> >nPoints = nPoints + 0 
> >End If 
> >c.SetAttrib "CurrentPoints", nPoints 
> > 
> >I also went to view -> script, and added "Dim nPoints as integer" in 
> >the user script. 
> > 
> >When I run my experiment, it successfully displays a trial count on 
> >the feedback slide as long as I make either correct or incorrect 
> >responses. However, as soon as I let a trial time out, I get the 
> >following error, and the program terminates: 
> > 
> >The following Runtime error occurred: 
> >Type Mismatch 
> >line: 640 
> >error number: 13 
> > 
> >I have tried adjusting a few things, but with no success.  Does 
> >anyone have experience getting around this error? thanks so much 
> > 
> >Erin 
>
>

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/e-prime/-/dKtmVZEFYOoJ.
For more options, visit https://groups.google.com/groups/opt_out.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.linguistlist.org/pipermail/eprime/attachments/20120926/a26f1b32/attachment.htm>


More information about the Eprime mailing list