Hello all,
First, congrats to Olaf. I know he has helped me soooo many times. I apologize for providing so little help myself. I've been trying to get my head above water with my app for 16 years now and I guess I don't really believe that will ever happen.
I am having an issue that showed up Sunday for no known reason. I say unknown but it could be related to the fact one of my customers got ransomware and because I had connected I overkilled and had Norton do a deep scan of my system. That was a month ago and I believe I have been paying for that ever since. They did not find anything wrong but I am about 99% sure it changed some things (long story).
I have a VFE/VFP 9.0 SP2 app with native FoxPro databases. On my development computer, Win 7 Pro x64, I made some modifications (that's pretty much 365 days a year). I revalidated my databases and recompiled my executables to upgrade a customer. One thing I always do is run my Balance Sheet report (my app is an accounting system) to ensure everything equals the last time it was run in the live environment just to be sure all is well. This report does write to one of my tables so it generates guid's as all my tables are keyed on guids. It uses the following VFE code to generate guids:
*==============================================================================
* Procedure: GUID
* Purpose: Generates a Globally Unique 16 or 32 Character Id
* Author: F1 Technologies
* Parameters: tlLong, Indicates if the
* Returns: lcGuid, the unique id
* Modifications:
* 01/12/2002 Added support for the tnLength parameter to return 32, 36
* and 36 characters.
*==============================================================================
FUNCTION GUID(tnLength)
LOCAL ;
lnLength, ;
lcGUID, ;
lcString1, ;
lcString2, ;
lcString3, ;
lcString4
IF VARTYPE(tnLength) <> T_NUMERIC OR ;
NOT INLIST(tnLength, 16, 32, 36, 38)
lnLength = 16
ELSE
lnLength = tnLength
ENDIF
lcGuid = UUID()
DO CASE
CASE lnLength = 16
*--Convert the binaries to hex values
lcString1 = BINTOHEX(Substr(lcGUID,1,4))
lcString2 = BINTOHEX(Substr(lcGUID,5,4))
lcString3 = BINTOHEX(Substr(lcGUID,9,4))
lcString4 = BINTOHEX(Substr(lcGUID,13,4))
lcGUID = lcString1 + lcString2 + lcString3 + lcString4
lcGUID = Left(lcGUID,8) + ;
SUBSTR(lcGUID,10,4) + ;
SUBSTR(lcGUID,15,4)
CASE lnLength = 32
lcGUID = BINTOHEX(lcGuid)
CASE lnLength = 36
lcGUID = TRANSFORM(BINTOHEX(lcGuid), "@R XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
CASE lnLength = 38
lcGUID = [{] + TRANSFORM(BINTOHEX(lcGuid), "@R XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX") + [}]
ENDCASE
RETURN lcGUID
ENDFUNC
*===========================================================================
* End: GUID
*===========================================================================
*==============================================================================
* Procedure: UUID
* Purpose: Generates a Universally Unique 16 Character Binary Id
* Author: F1 Technologies
* Parameters:
* Returns: lcGuid, the unique id
* Notes: If the results of this function are stored in a field the
* field should be a Character Binary field with a size of 16.
* Added: 11/10/99
*==============================================================================
FUNCTION UUID
LOCAL ;
lcUUID
IF NOT IsFunctionLoaded("UUIDCreate")
DECLARE INTEGER UuidCreate IN rpcrt4.dll String @ UUID
ENDIF
lcUUID = Space(16)
* Pass lcGUID to the UUIdCreate function
UUIDCreate(@lcUUID)
RETURN lcUUID
ENDFUNC
*===========================================================================
* End: UUID
*===========================================================================
*==============================================================================
* Procedure: IsFunctionLoaded
* Purpose: Determines if a DLL Function has already been loaded with
* the DECLARE statement
* Author: F1 Technologies
* Parameters: tcFunction, the name of the Function check
* Returns: Logical
* Added: 09/02/2004
*==============================================================================
FUNCTION IsFunctionLoaded
LPARAMETERS ;
tcFunction
LOCAL ARRAY ;
laFunctions[1]
RETURN NOT (ADLLS(ladlls)=0 or ASCAN(ladlls,tcFunction,1,0,1,15)=0)
*==============================================================================
* IsFunctionLoaded
*==============================================================================
Intermittently,(still working on finding the pattern), I get the error cannot load 32-bit DLL c:\windows\system32\rpcrt4.dll on the line UUIDCreate(@lcUUID)
As I said, I am still trying to find the scenario where it occurs every time but as yet have been unable to do so. I am hoping someone will say, Hey, did you look at this? This has my development completely shut down so it is pretty critical. I have read everything on the internet that I can find with no luck.
Thanks,
John
First, congrats to Olaf. I know he has helped me soooo many times. I apologize for providing so little help myself. I've been trying to get my head above water with my app for 16 years now and I guess I don't really believe that will ever happen.
I am having an issue that showed up Sunday for no known reason. I say unknown but it could be related to the fact one of my customers got ransomware and because I had connected I overkilled and had Norton do a deep scan of my system. That was a month ago and I believe I have been paying for that ever since. They did not find anything wrong but I am about 99% sure it changed some things (long story).
I have a VFE/VFP 9.0 SP2 app with native FoxPro databases. On my development computer, Win 7 Pro x64, I made some modifications (that's pretty much 365 days a year). I revalidated my databases and recompiled my executables to upgrade a customer. One thing I always do is run my Balance Sheet report (my app is an accounting system) to ensure everything equals the last time it was run in the live environment just to be sure all is well. This report does write to one of my tables so it generates guid's as all my tables are keyed on guids. It uses the following VFE code to generate guids:
*==============================================================================
* Procedure: GUID
* Purpose: Generates a Globally Unique 16 or 32 Character Id
* Author: F1 Technologies
* Parameters: tlLong, Indicates if the
* Returns: lcGuid, the unique id
* Modifications:
* 01/12/2002 Added support for the tnLength parameter to return 32, 36
* and 36 characters.
*==============================================================================
FUNCTION GUID(tnLength)
LOCAL ;
lnLength, ;
lcGUID, ;
lcString1, ;
lcString2, ;
lcString3, ;
lcString4
IF VARTYPE(tnLength) <> T_NUMERIC OR ;
NOT INLIST(tnLength, 16, 32, 36, 38)
lnLength = 16
ELSE
lnLength = tnLength
ENDIF
lcGuid = UUID()
DO CASE
CASE lnLength = 16
*--Convert the binaries to hex values
lcString1 = BINTOHEX(Substr(lcGUID,1,4))
lcString2 = BINTOHEX(Substr(lcGUID,5,4))
lcString3 = BINTOHEX(Substr(lcGUID,9,4))
lcString4 = BINTOHEX(Substr(lcGUID,13,4))
lcGUID = lcString1 + lcString2 + lcString3 + lcString4
lcGUID = Left(lcGUID,8) + ;
SUBSTR(lcGUID,10,4) + ;
SUBSTR(lcGUID,15,4)
CASE lnLength = 32
lcGUID = BINTOHEX(lcGuid)
CASE lnLength = 36
lcGUID = TRANSFORM(BINTOHEX(lcGuid), "@R XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
CASE lnLength = 38
lcGUID = [{] + TRANSFORM(BINTOHEX(lcGuid), "@R XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX") + [}]
ENDCASE
RETURN lcGUID
ENDFUNC
*===========================================================================
* End: GUID
*===========================================================================
*==============================================================================
* Procedure: UUID
* Purpose: Generates a Universally Unique 16 Character Binary Id
* Author: F1 Technologies
* Parameters:
* Returns: lcGuid, the unique id
* Notes: If the results of this function are stored in a field the
* field should be a Character Binary field with a size of 16.
* Added: 11/10/99
*==============================================================================
FUNCTION UUID
LOCAL ;
lcUUID
IF NOT IsFunctionLoaded("UUIDCreate")
DECLARE INTEGER UuidCreate IN rpcrt4.dll String @ UUID
ENDIF
lcUUID = Space(16)
* Pass lcGUID to the UUIdCreate function
UUIDCreate(@lcUUID)
RETURN lcUUID
ENDFUNC
*===========================================================================
* End: UUID
*===========================================================================
*==============================================================================
* Procedure: IsFunctionLoaded
* Purpose: Determines if a DLL Function has already been loaded with
* the DECLARE statement
* Author: F1 Technologies
* Parameters: tcFunction, the name of the Function check
* Returns: Logical
* Added: 09/02/2004
*==============================================================================
FUNCTION IsFunctionLoaded
LPARAMETERS ;
tcFunction
LOCAL ARRAY ;
laFunctions[1]
RETURN NOT (ADLLS(ladlls)=0 or ASCAN(ladlls,tcFunction,1,0,1,15)=0)
*==============================================================================
* IsFunctionLoaded
*==============================================================================
Intermittently,(still working on finding the pattern), I get the error cannot load 32-bit DLL c:\windows\system32\rpcrt4.dll on the line UUIDCreate(@lcUUID)
As I said, I am still trying to find the scenario where it occurs every time but as yet have been unable to do so. I am hoping someone will say, Hey, did you look at this? This has my development completely shut down so it is pretty critical. I have read everything on the internet that I can find with no luck.
Thanks,
John