That is correct.

On Sep 10, 2012, at 10:39 PM, "Perkins, Bradley D" <[email protected]> wrote:

> I don't think my original question ever made it to the list but this would
> appear to be the solution:
> 
> C_REAL ($1) `From Active4D
> C_LONGINT($tableID) `Same type as [TABLE]id
> $tableID := Int($1) `Convert Real to Integer
> 
> 
> -- Brad Perkins
> 
> 
> On 9/10/12 10:40 AM, "Perkins, Bradley D" <[email protected]> wrote:
> 
>> Despite using Active4D since V1 I only recently learned that when calling
>> 4D Methods, numeric and textual parameters in the 4D method must be typed
>> C_REAL and C_TEXT. This is clearly documented but I somehow missed it and
>> in our case it hadn't been causing clearly noticeable problems. Recently
>> (thanks to Aparajita) we discovered that it was contributing to a memory
>> leak that would eventually crash 4D. In my case I had a lot of methods
>> with C_STRING parameters that needed to be replaced with C_TEXT. Easy
>> enough to fix.
>> 
>> `Example Method called by Active4D
>> 
>> C_TEXT($1; $inString) `replaces C_STRING($1;$inString;20)
>> $inString := Substring($1;1;20)
>> 
>> 
>> 
>> We've long run a structure that serves both Active4D and legacy
>> (Netlink/WS4D style) pages. I am in the process of rewriting the latter in
>> A4D and am encountering more called 4D methods that have illegal parameter
>> types.
>> 
>> My question involves having to now use C_REAL instead of C_LONGINT.
>> Most of the cases where I'll need to replace C_REAL parameters are methods
>> where I currently use C_LONGINT to reference a primary key for a QUERY.
>> 
>> `Example Method 2 called by Active4D
>> C_REAL ($1; $tableID) ` replaces C_LONGINT($1; $tableID)
>> $tableID := $1
>> QUERY([TABLE];[TABLE]id = $tableID) `[Table]id is a long integer, $tableID
>> is a real
>> ...
>> 
>> I have always run 4D compiled in production. I always compile with "All
>> variables are typed". From my CS studies and Numerical Analysis classes I
>> know that a floating point number that "looks equal" to a similar integer
>> isn't always equal.
>> 
>> In re-typing existing method C_LONGINT parameters to C_REAL, do I need to
>> worry that about this?
>> 
>> Should I do something like this?
>> 
>> C_REAL ($1) ` replaces C_LONGINT($1; $tableID)
>> C_LONGINT($tableID)
>> $tableID := Round($1;0)
>> 
>> QUERY([TABLE];[TABLE]id = $tableID) `[Table]id is a long integer, $tableID
>> is a real
>> 
>> Thanks,
>> 
>> Brad Perkins
>> 
>> 
>> 
>> 
>> 
> 
> _______________________________________________
> Active4D-dev mailing list
> [email protected]
> http://list.aparajitaworld.com/listinfo/active4d-dev
> Archives: http://active4d-nabble.aparajitaworld.com/

Regards,

   Aparajita

_______________________________________________
Active4D-dev mailing list
[email protected]
http://list.aparajitaworld.com/listinfo/active4d-dev
Archives: http://active4d-nabble.aparajitaworld.com/

Reply via email to