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/

Reply via email to