[IronPython] IP 1.0 Beta 2 float to int conversion

J. de Hooge info at geatec.com
Fri Jan 27 09:47:51 CET 2006



Function getMaxSplitterDistance is a Python function, defined in two derived

It returns an integer. See code below.

Variable state is a float between 0 and 1.


But the same thing happens in the following simpler situation:


If I code literally:


       self.widget.SplitterDistance = 100.0


It's ok on IP 0.9.5 but not on IP 1.0 Beta 2, whereas


self.widget.SplitterDistance = 100


is ok on both.





--- Minimum (nonsense) code for reproduction of this behaviour:


from sys import *


from System.Windows import Forms


splitContainer = Forms.SplitContainer ()


print 1

splitContainer.SplitterDistance = 100

print 2

splitContainer.SplitterDistance = 100.0

print 3



--- Output on IP 0.9.5:







--- Output on IP 1.0 Beta 2:




Traceback (most recent call last):

  File C:\activ_dell\prog\fun\src\funTry.py, line 10, in Initialize

TypeError: No conversion from 100 to System.Int32



--- Original code that revealed the change:


class SplitViewBase:


       # . Other members


       def createWidget (self):

              self.widget = Forms.SplitContainer ()

              self.widget.Dock = Forms.DockStyle.Fill


              def setState (sender, arguments):

                     self.state = (1.0 * self.widget.SplitterDistance) /
self.getMaxSplitterDistance ()


              def getStateAndAllowSetState (sender, arguments):

                     if self.widget.Visible:

                           if hasattr (self, 'state'):


                                         self.widget.SplitterDistance = int
(self.state * self.getMaxSplitterDistance ())




                           self.widget.SplitterMoved += setState


              self.widget.VisibleChanged += getStateAndAllowSetState


              self.widget.Panel1.Controls.Add (self.childView1 .createWidget

              self.widget.Panel2.Controls.Add (self.childView2 .createWidget


              return self.widget


class HSplitView (SplitViewBase):

       # . Other members

       def getMaxSplitterDistance (self):

              return self.widget.Width

       # . Other members


class VSplitView (SplitViewBase):

       # . Other members

       def getMaxSplitterDistance (self):

              return self.widget.Height

       # . Other members



-----Oorspronkelijk bericht-----
Van: users-bounces at lists.ironpython.com
[mailto:users-bounces at lists.ironpython.com] Namens Dino Viehland
Verzonden: Thursday, January 26, 2006 6:55 PM
Aan: Discussion of IronPython
Onderwerp: Re: [IronPython] IP 1.0 Beta 2 float to int conversion


We have made some changes in this space but I just haven't found the change
that would have affected this yet.


One thing I'm curious about - is getMaxSpliiterDistance C# code or Python
code?  The reason I ask if I'm wondering if it's returning a float or a
double (we represent Python float's w/ doubles, so if it came from a literal
it'll be a double).



From: users-bounces at lists.ironpython.com
[mailto:users-bounces at lists.ironpython.com] On Behalf Of J. de Hooge
Sent: Thursday, January 26, 2006 8:10 AM
To: users at lists.ironpython.com
Subject: [IronPython] IP 1.0 Beta 2 float to int conversion





Thanks for the new release and all the work invested!

I've just stepped up from IP 0.9.5 to IP 1.0 Beta 2, and I noticed the




In 0.9.5 the following runs fine, where self.widget is a
Forms.SplitContainer (type: Int32 property) and the r.h.s. is a float, e.g.


self.widget.SplitterDistance = self.state * self.getMaxSplitterDistance ()




In 1.0 Beta it will stall with the following message:


No conversion from 100 to System.Int32




Stricktly taken, the IP 1.0 is correct, but I found the auto-conversion

Has the conversion behaviour been tightened deliberately?


Kind regards


Jacques de Hooge

info at geatec.com


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20060127/df130e4d/attachment.html>

More information about the Ironpython-users mailing list