Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Com Interop Conditional Implements Statement
Message
From
08/06/2011 11:56:16
 
 
To
08/06/2011 11:44:55
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
MS SQL Server
Application:
Desktop
Miscellaneous
Thread ID:
01513528
Message ID:
01513583
Views:
51
Never used the implements - but if you only want one exe why not

(1) ensure "C:\Program Files (x86)\netappdirectory\filename.tlb" exists on the build server

(2) DEFINE CLASS AppEvents AS SESSION
IMPLEMENTS iEvents IN "C:\Program Files (x86)\netappdirectory\filename.tlb"



So it will always compile on the build server

Finally test whether the exe works on both 32 bit and 64 bit systems




>Thanks but it's a no-go. :( In both cases, we have to compile a 32 bit version (with the path there) and a 64 bit version (with the x86 path there) for this to work. don't want two separate exes... and if the path doesn't exist at build time (which it won't on a build server), then it won't work for either :(
>
>
>>Untested but worth trying
>>
>>
>>
>>#if file("C:\Program Files\netappdirectory\filename.tlb")
>>#     define TLB_FILE  "C:\Program Files\netappdirectory\filename.tlb"
>>#else
>>#     define TLB_FILE  "C:\Program Files (x86)\netappdirectory\filename.tlb"
>>#endif
>>
>>DEFINE CLASS AppEvents AS SESSION
>>IMPLEMENTS iEvents IN  TLB_FILE  
>>
>>
>>
>>or
>>
>>
>>DEFINE CLASS AppEvents AS SESSION
>>#if file("C:\Program Files\netappdirectory\filename.tlb")
>>IMPLEMENTS iEvents IN   "C:\Program Files\netappdirectory\filename.tlb"
>>#else
>>IMPLEMENTS iEvents IN   "C:\Program Files (x86)\netappdirectory\filename.tlb"
>>#endif
>>
>>
>>
>>
>>
>>
>>
>>
>>>I posted this question yesterday, but do not see it in my list of messages so reposting....
>>>
>>>
>>>I have a class defined for com interop with a .net dll which works great -- i hook into the events and can pass to/from the .net dll and fire events in vfp from the .net dll.
>>>
>>>The issue is Windows 7 64 versus 32 bit. The .net dll is always installed in the program files unless of course it is 64 bit windows which then installs into program files (x86).....
>>>
>>>In the DEFINE CLASS section, I have to point to the .tlb in the IMPLEMENTS statement
>>>
>>>If I point explicitly to the location:
>>>
>>>DEFINE CLASS AppEvents AS SESSION
>>>IMPLEMENTS iEvents IN "C:\Program Files\netappdirectory\filename.tlb"
>>>
>>>or
>>>
>>>IMPLEMENTS iEvents IN "C:\Program Files (x86)\netappdirectory\filename.tlb"
>>>
>>>both work fine.
>>>
>>>However in the class definition, I cannot use (syntax errors -- not allowed):
>>>
>>>IF DIRECTORY(look for x86) AND FILE() etc...
>>> IMPLEMENTS iEvents IN "C:\Program Files (x86)\netappdirectory\filename.tlb"
>>>ELSE
>>> .....
>>>ENDIF
>>>
>>>But I can:
>>>before class definition: lcNetDirfile = "C:\Program Files....."
>>>and then in the class definition do this:
>>>
>>>IMPLEMENTS iEvents IN (EVALUATE(lcNetDirFile))
>>>
>>>however, it doesn't really work. It builds fine (no errors), but doesn't really work. I cannot hook into the events.
>>>
>>>I need a way to have a conditional use of implements in the class definition....
>>>
>>>Any ideas?
Gregory
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform