Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to call VFP function from .NET C# code?
Message
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
VB 9.0
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01612997
Message ID:
01613015
Views:
54
>Can you post the code here and I'll have a look

Here is the code:
*=======================================================================
*-- Function: 			CIPHER
*-- Author:			Sergey Berezniker
*-- Date:				1-9-2006 

FUNCTION cipher
LPARAMETERS tcStr, tcPassword

#define   ERRORNEGL    -1L
#define   PW_MIN_LEN   3        	&&  /* number of chars in password */
#define   PW_MIN_NUM   1000 	  	&&  /* number of digits in password return number */

LOCAL lnStrLen, lnPassLen, lnPassNum, laPassword[1,2], lcPassword
LOCAL lcStrOut, lnPassPos, lnNum01, lcStrOut, lnInPos, lnPassPos

IF TYPE("tcStr") <> "C" ;
		OR TYPE("tcPassword") <> "C" ;
		OR LEN(tcPassword) < PW_MIN_LEN
	Error 11
ENDIF

lnStrLen = LEN(tcStr)

* Because of the bug in the original C code we've to add CHR(0) to the password
* 		and use it later
lcPassword = tcPassword + CHR(0)
lnPassLen = LEN(lcPassword)
DIMENSION laPassword[lnPassLen+1,2]
FOR lnPassPos=1 TO lnPassLen
	laPassword[lnPassPos,2] = SUBSTR(lcPassword,lnPassPos,1)
	laPassword[lnPassPos,1] = ASC(laPassword[lnPassPos,2])
ENDFOR

* Get seed value
lnPassNum = INT((((CipherGetPnum(lcPassword)/997) - 1) % 254) + 1 )
lcStrOut = ""
lnPassPos = 1

* Encode/decode each character
FOR lnInPos=0 TO lnStrLen-1
	* Get new seed value
	lnNum01 = (( lnPassNum + (lnInPos - lnStrLen)) - 1)
	lnPassNum = (ABS(lnNum01) % 254) * SIGN(lnNum01) + 1
	* Encode current character
	lnByte = BITXOR( ASC(SUBSTR(tcStr,lnInPos+1,1)), ;
		BITXOR(lnPassNum, laPassword[lnPassPos,1]))
	* Convert signed value to unsigned, if necessary
	lnByte = BITAND(lnByte, 0xFF)
	* If result is zero, use current character
	lcStrOut = lcStrOut + IIF(lnByte = 0, SUBSTR(tcStr,lnInPos+1,1), CHR(lnByte))
	* Advance to the next password character
	lnPassPos = IIF( lnPassPos => lnPassLen, 1, lnPassPos + 1)
ENDFOR

RETURN lcStrOut

* Returns a seed value based on the string passed as parameter
FUNCTION CipherGetPnum(tcStr)
	LOCAL liRet, lnPos
	liRet = 1
	FOR lnPos=0 TO LEN(tcStr ) - 1
		liRet = liRet + ASC(SUBSTR(tcStr,lnPos+1,1)) + lnPos
	ENDFOR
	DO WHILE (liRet < PW_MIN_NUM)
		liRet = BITLSHIFT(liRet,1)
	ENDDO
	RETURN liRet
ENDFUNC
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Previous
Reply
Map
View

Click here to load this message in the networking platform