increasing/decreasing percentage - pie chart/ circular graph
Matt Paffel
mpaffel at gmail.com
Thu May 13 21:43:37 UTC 2010
Hello...again. Sorry for taking up so much time with this but I’ve
entered the code and when I generate it, there seems to be no problem,
the code generates just fine. However, when I try to run the program,
I keep getting the error message 13, “type mismatch”. I then put all
the various 1’s and 2’s in quotation marks which allow me to not only
generate the code, but also run the program. However, the program does
not respond to any of the keys pressed, which inevitably leads me to
have to ctrl, alt, shift out of the program. After looking at it, one
of my colleagues suggested I place the entire code online for whomever
to look at and see if they can make it work. I’m not sure of the
etiquette of this and have opted against doing so but if anyone would
be willing to take a shot at it I can certainly do so. Does anyone
have a suggestion of where to go from here?
On May 13, 2:04 pm, David McFarlane <mcfar... at msu.edu> wrote:
> OK, by now you are all sick of this, but I couldn't let that last
> sample code sit, so as yet another exercise I revised it so that it
> will use .RESP = 1 for decrease and .RESP = 2 for increase (but as a
> further exercise, think through what happens if .RESP goes outside
> that range; of course one could prevent that by proper use of
> Allowable). Note the use of CSng(). Remember, you are responsible
> for catching typos and making your own corrections in any of the free
> and hastily-produced sample code posted here.
>
> Dim currentPerc as Integer, newPerc as Integer
> If IsNumeric(mySlide.RESP) Then
> newPerc = currentPerc + (2 * ( CSng(mySlide.RESP) - 1.5 ))
> If (0 <= newPerc) and (newPerc <= 100) Then
> currentPerc = newPerc
> c.SetAttrib "myPicture", "pie" & Cstr(newPerc) & ".bmp"
> End If
> goto Label1
> End if
>
> -- David McFarlane, Professional Faultfinder
>
> At 5/12/2010 03:35 PM Wednesday, David McFarlane wrote:
>
>
>
>
>
> >Susan,
>
> >Good catch, I obviously missed that when I made & posted my
> >revisions! Just for the record (and because I am such a pedant) here
> >are all the code samples again with corrections
> >made. <editorial>AFAIK E-Basic/Visual Basic is the only language
> >that has this silly rule about parentheses around Function arguments
> >but not Sub arguments, which causes much pain for no useful
> >purpose. (For that matter, more rational languages such as C do
> >away with the useless distinction between functions and subroutines
> >altogether.)</editorial>
>
> >First, my base revision of Mich's code (also adding more parentheses
> >around conditional clauses, and putting tests into numerical order
> >just because I think it reads better) (and please pay attention to
> >the underscore "_" that I use at the end of some lines, yet another
> >silly affectation of Basic)...
>
> >If (mySlide.resp = 1) then ' decrease pie slice
> > If c.GetAttrib("CurrentPerc") > 1 then _
> > c.SetAttrib "CurrentPerc", CInt(c.GetAttrib("CurrentPerc")) - 1
> > c.SetAttrib "myPicture", _
> > "pie" & cstr(c.GetAttrib("CurrentPerc")) & ".bmp"
> > goto Label1
> >ElseIf (mySlide.resp = 2) then ' increase pie slice
> > If c.GetAttrib("CurrentPerc") < 100 then _
> > c.SetAttrib "CurrentPerc", CInt(c.GetAttrib("CurrentPerc")) + 1
> > c.SetAttrib "myPicture", _
> > "pie" & cstr(c.GetAttrib("CurrentPerc")) & ".bmp"
> > goto Label1
> >End If
>
> >Then, my revision using a variable instead of an attribute reference for
> >CurrentPerc (and this time giving a type to the variable)...
>
> >Dim currentPerc as Integer ' Single would allow fractional changes
> >If (mySlide.resp = 1) then ' decrease pie slice
> > If (currentPerc > 1) then currentPerc = currentPerc - 1
> > c.SetAttrib "myPicture", "pie" & cstr(currentPerc) & ".bmp"
> > goto Label1
> >ElseIf (mySlide.resp = 2) then ' increase pie slice
> > If (currentPerc < 100) then currentPerc = currentPerc + 1
> > c.SetAttrib "myPicture", "pie" & cstr(currentPerc) & ".bmp"
> > goto Label1
> >End If
>
> >Then my exercise using Select...Case...
>
> >Dim currentPerc as Integer
> >Select Case mySlide.RESP
> >Case 1 ' decrease pie slice
> > If (currentPerc > 1) then currentPerc = currentPerc - 1
> > c.SetAttrib "myPicture", "pie" & cstr(currentPerc) & ".bmp"
> > goto Label1
> >Case 2 ' increase pie slice
> > If (currentPerc < 100) then currentPerc = currentPerc + 1
> > c.SetAttrib "myPicture", "pie" & cstr(currentPerc) & ".bmp"
> > goto Label1
> >End Select
>
> >And finally, Mich reduced it all to (with me now adding the Dim, and
> >making a correction to his literal constant value)...
>
> >' Assumes .RESP = 1 for decrease, .RESP = 3 for increase, otherwise
> >' algorithm will fail.
> >Dim currentPerc as Integer
> >If IsNumeric(mySlide.RESP) then
> > If ((currentPerc + cint(mySlide.RESP) - 2) > 0) AND _
> > ((currentPerc + cint(mySlide.RESP) - 2) < 100) then _
> > currentPerc = currentPerc + cint(mySlide.RESP)- 2
> > c.SetAttrib "myPicture", "pie" & cstr(currentPerc) & ".bmp"
> > goto Label1
> >End if
>
> >Note that this all assumes that the Procedure runs until we are done
> >with pie slices, otherwise we would have to work with a global variable.
>
> >-- David McFarlane, Professional Faultfinder
>
> >>Here's a thought: while c.GetAttrib takes parens, c.SetAttrib does
> >>not; I believe the general form should be:
> >>c.SetAttrib "CurrentPerc", "12"
> >>or whatever. That should fix that particular error. You may also have
> >>a problem because all attributes are strings, so conversion to integer
> >>may be necessary in some places.
> >>HTH,
> >>Susan
> >>On May 12, 12:37 pm, Matt Paffel <mpaf... at gmail.com> wrote:
> >>>Arrrgggh!!!
>
> >>>So I've spent the last couple of days trying to place the various code
> >>>within the experiment. every time i try to do so i get the error
> >>>messages "SetAttrib is not a property of the object" when i put any of
> >>>the above script in or "CurrentPerc is not an assignable property of
> >>>the object" when i try to set CurrentPerc as an attribute, any
> >>>suggestions?
>
> >--
> >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.
> >For more options, visit this group at
> >http://groups.google.com/group/e-prime?hl=en.
>
> --
> 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.
> For more options, visit this group athttp://groups.google.com/group/e-prime?hl=en.- Hide quoted text -
>
> - Show quoted text -
--
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.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.
More information about the Eprime
mailing list