xsharp.eu • Override the chr() function
Page 1 of 1

Override the chr() function

Posted: Wed Oct 03, 2018 12:53 pm
by Karl-Heinz
i´m not able to override the chr() func, while overriding Asc() works as expected. Strange is, that if i place within XIDE the mouse over "chr(196)" the tooltip says "Defined" in my exe, but the compiler generates this code:

c := XSharp.Core.Functions.CHR(196u) // still pointing to the core function chr()

dw := Asc("Ž") // ok, points to the Asc() func in the created exe

Any ideas what the problem with "Chr" might be ?

Code: Select all


_DLL FUNCTION MessageBox(hwnd AS intptr , lpText AS STRING, lpCaption AS STRING, uType AS DWORD);
	AS INT PASCAL:USER32.MessageBoxA ANSI

#define _OVERRIDE_ASC_AND_CHR_

#ifdef _OVERRIDE_ASC_AND_CHR_

FUNCTION CHR (dwChar AS DWORD ) AS STRING
 
	? "Chr() override" 

	RETURN XSharp.Core.Functions.ChrA ( dwChar )		
	
FUNCTION Asc (c AS STRING ) AS DWORD 

	? "Asc() override" 
		
	RETURN XSharp.Core.Functions.AscA(c )
	
#endif

FUNCTION Start() 	AS VOID 
LOCAL dw AS DWORD 
LOCAL c AS STRING 

	
	c := CHR( 196 )   // should show "Ä"
	
	dw := asc ( "Ž" )    // should show 142 
	
	
	messagebox ( NULL ,  c + chr(13) + chr(10) + ntrim ( dw ) , "" , 0 )  
	
	
RETURN  


regards
Karl-Heinz

Override the chr() function

Posted: Wed Oct 03, 2018 1:50 pm
by robert
Karl-Heinz,

Chr is a special function in X# (and in Vulcan too): When the parameter is a literal number and its value is between 0 and 127 then the matching character literal is inserted in the code.
Otherwise a call to the XSharp.Core.Functions.Chr() is inserted.

We never expected that our users would want to replace the function.

Robert