General VEE Hints & Debugging Notes

last update 27 aug 98 / greg goebel / public domain / vwhint

* This document provides comments on various VEE limitations and "features" that may be misinterpreted as bugs, as well as some useful hints.


[*] VEE HINT / Compiling VEE Classic IDs
[*] VEE HINT / Creating UserObject Panel Views In VEE 4.0
[*] VEE HINT / 24 Bit Bitmaps & VEE
[*] VEE HINT / Cautions With Using Timer Objects
[*] VEE HINT / Registry Problems Cause VEE To Lose Its Mind /
[*] VEE HINT / Instrument Manager Loses Instrument Configurations /
[*] VEE HINT / Beep Limitations As Of VEE 4.0
[*] VEE HINT / Autost Objects And Runonly In VEE 4.X
[*] VEE HINT / Autoscaling User Interfaces
[*] VEE HINT / Start Button Issues
[*] VEE HINT / Running Out Of Memory On VEE-UX
[*] VEE HINT / Reserved Keyword Conflicts
[*] VEE HINT / I/O Manager Refresh & Serial Interfaces
[*] VEE HINT / Timezone Issues
[*] VEE HINT / Hiding The VEE Program Explorer Window
[*] VEE HINT / Error Trapping And Control Pins
[*] VEE HINT / Securing Programs On VEE 4.0
[*] VEE HINT / F10 Key On VEE PC Not Functional
[*] VEE HINT / VEE-UX Print Screen Magnifications
[*] VEE HINT / VEE-To-VEE RPC Limitations
[*] VEE HINT / Bus I/O Monitor & LAN-HPIB
[*] VEE HINT / Timeouts On Interface Events
[*] VEE HINT / No I/O Found & Other I/O Configuration Problems
[*] VEE HINT / VXLink Disappears
[*] VEE HINT / VEE Sun Serial Problem
[*] VEE HINT / Dumping Error Codes To Files
[*] VEE HINT / Deleting UserLibraries Synch Problem
[*] VEE HINT / Out-Of-Memory Error Hint
[*] VEE HINT / Memory Leaks As Programming Errors
[*] VEE HINT / Error Trapping & Memory Leaks
[*] VEE HINT / Duplicated Pins & Memory Leaks
[*] VEE HINT / Printing Problems
[*] VEE HINT / Compiling IDs
[*] VEE HINT / Changed Device Names
[*] VEE HINT / IFC Pulsed
[*] VEE HINT / Totsize Won't Handle Null Inputs Properly
[*] VEE HINT / Determining VEE Data Types
[*] VEE HINT / Hidden Popups
[*] VEE HINT / Minor Sequencer Bug With Tolerances
[*] VEE HINT / Array Comparisons
[*] VEE HINT / Stop Objects
[*] VEE HINT / Lose Last Point On Graph Display
[*] VEE HINT / Funny Missing Window Problem
[*] VEE HINT / File Dialogue Always Adds .VEE Extension
[*] VEE HINT / Serial Buffer Size Stuck At 1KB On Win95
[*] VEE HINT / Integration Function Problems
[*] VEE HINT / VEE Process Priorities On HPUX
[*] VEE HINT / VEE Help Function Confusion
[*] VEE HINT / Callable VEE Problem With Borland C

 BACK TO INDEX

[*] VEE HINT / Compiling VEE Classic IDs

* If you download an old classic VEE driver from the Web, it will be in uncompiled text form. You can compile it by simply configuring the uncompiled .ID file under VEE just as you would the compiled .CID VEE file. It will be compiled automatically the first time it is invoked.

The VEE ID will have a revision level. Don't worry about it having to match a particular revision level of VEE, the older revcodes will work fine.

[*] VEE HINT / Creating UserObject Panel Views In VEE 4.0

* In VEE 3.x, the panel view of a UserObject could be added to the main panel view by selecting the object and then clicking: Edit -> Add to Panel.

Under VEE 4.0, would appear to have been removed: place a UserObject icon in a panel view and click on it -- and you get a edit window that is independent of your original editing context.

In fact, it wasn't removed -- just well-disguised. You need to use the Restore entry in the UserObject object menu, and then you get a panel that you can add to the Main program's panel view.

[*] VEE HINT / 24 Bit Bitmaps & VEE

* A customer was getting an entire sequence of errors when loading VEE 3.X programs into VEE 5.0.

As it turned out, the old VEE 3.X programs contained 24-bit bitmaps. These are unsupported on vEE 5.0 (they never worked very well) and so VEE 5.0 won't load a program that loads such bitmaps.

[*] VEE HINT / Cautions With Using Timer Objects

* We have had reports of programs that run faster under VEE 3.2 than under VEE 4.0. There are some speed issues on the margins, but in some cases it's an illusion, caused by miswiring Timer objects in the program.

If a Timer is carelessly wired so that other objects are in the path used to ping its input pins, the sequence by which the Timer input pins are exercised may vary between VEE 3 and VEE 4. Observing data and control flow can help reveal such a condition. In any case, timer inputs should be wired from the sequence-out pins of other objects with nothing else shared on the line. A Do object can be used to ensure sequencing.

[*] VEE HINT / Registry Problems Cause VEE To Lose Its Mind /

* If VEE is doing strange things like forgetting where files are supposed to be stored or losing entries in Instrument Manager, check the Windows Registry entries for VEE. Sometimes they get scrambled ... it seems to happen sometimes when you have new versions of VEE installed over older ones.

[*] VEE HINT / Instrument Manager Loses Instrument Configurations /

* Another thing that can be tried when the Instrument Manager seems to be doing odd things like losing entries is to delete the VEE.IO file and then try again. It appears to get corrupted and then behaves erratically.

[*] VEE HINT / Beep Limitations As Of VEE 4.0

* The Beep Object doesn't work all that well on Win32 under VEE 4.X or later. It sometimes only gives a faint click and frequency can't be controlled at all. The reason is (so we have been told) that Microsoft settled on an API call that doesn't provide much in the way of control and so it's difficult to work around. Using a sound card and a WAV player is the best option over the long run.

[*] VEE HINT / Autost Objects And Runonly In VEE 4.X

* If you have programs driven by AutoStart objects and try to run them in the VEE 4.X RunOnly, they will immediately execute and die. You will need to modify such programs.

[*] VEE HINT / Autoscaling User Interfaces

* We have had many requests from VEE users that there should be some way for VEE to automatically rescale its display to the proper screen resolution. This is not very practical, and experiments with other programming languages with building automatic rescale proved laborious and didn't produce very good results.

[*] VEE HINT / Start Button Issues

* The Call Stack doesn't work for programs that begin with Start objects. It also doesn't give very good results for running programs in VEE RunOnly. Its use is discouraged except for debugging.

[*] VEE HINT / Running Out Of Memory On VEE-UX

* When we have users call us to complain they are getting an "out-of-memory" error on VEE for HP-UX, when they actually have plenty of memory. We always tell them to modify the "maxdsiz" (maximum data segment size) in Kernel Configuration -> Configurable Parameters to tell the HP-UX to give VEE more room to move.

This often leads to a protest that the program isn't using that much data, so something must be wrong. Actually, since HP-UX doesn't execute the VEE program directly (it's executed by VEE), the entire VEE program is seen as "data", not just the variables and arrays.

[*] VEE HINT / Reserved Keyword Conflicts

* We had a customer who was using a To String object in VEE as follows:


   +--------------------------------------+
   |             To String                |
   +-+-----------------------------+------+
   | |WRITE TEXT spec[A].num+", "  |      |   
   |A|WRITE TEXT spec[A].freq+", " |result|
   | |WRITE TEXT spec[A].msk       |      |
   +-+-----------------------------+------+  

-- where "spec" was a global record. He got the error:


   +-----------------------------------------+
   |            Parse Errror                 |
   +---+------------------------------+------+
   |   | Device Type:  UNKNOWN        |      |
   |   | Filename:                    |      |
   | A | Line number:  155            |result|
   |   |                              |      |
   |   |                              |      |
   +---+------------------------------+------+  

I asked a lab guy about this and he said: "'Spec' is a reserved keyword."

"Oh." I suggested the customer use a different name.

[*] VEE HINT / I/O Manager Refresh & Serial Interfaces

* If you select a serial interface under VEE I/O Manager, you'll find the "Refresh" button disabled (grayed out). No surprise -- there's no way to interrogate a serial interface to see if an instrument's on it.

[*] VEE HINT / Timezone Issues

* A VEE user in Norway ported his files from VEE 3.12 to VEE 4.0 and found out that timestamp data was off by 9 hours.

As it turns out, this gave Pacific Standard Time -- which is the default for PC operation. Apparently he hadn't set the timezone on his old VEE 3.12 (Windows 3) machine. Or maybe he had. The lab guy says the operation of TZ on old Windows was uncertain.

On WinNT you can set a TZ variable as follows:


   My Computer -- (secondary mouse button) -> Properties
      -> Environment -> System Variables  

[*] VEE HINT / Hiding The VEE Program Explorer Window

* While it is possible, using the View menu, to turn the VEE 4.X Program Explorer window on or off, this setting is not necessarily preserved when VEE is exited and then reloaded.

To ensure that the setting is preserved, the user should go to the Files menu -> Default Preferences -> Save Default Preferences before leaving VEE. If this is done, the setting will be preserved into the next load.

[*] VEE HINT / Error Trapping And Control Pins

* A customer gave us the following program:


		+--------------------+
		|                    |
                |   +----------------+---------------+ 
   +---------+  |   |              Enum              |
   |  Text   |  |   +---------------+--------+-------+
   +---------+  |   |               | < > T1 | Enum  +-->
   | T0      +--|-->| Default Value | <*> T2 |       |
   +----+----+  |   |               | < > T3 |       |
	|       |   |               | < > T4 | Error +-->
	|       |   +---------------+--------+-------+
        +-------+
 
Setting an incorrect value causes an error, but it generates an error box, not an error pin output as might be expected. This appears to be a bug, but it's actually normal VEE behavior under such circumstances: the Default Value pin is a control input, not a data input, and error trapping won't work on a control input.

The reason is that control inputs do not actually cause an object to execute. If the object doesn't execute, it cannot generate any outputs.

The lab has wanted to change some control pins to data pins for this reason. The only workaround at present is to enclose the objects in a UserObject or UserFunction, and then set up an error pin on that.

[*] VEE HINT / Securing Programs On VEE 4.0

* A customer had a secured VEE program and had changed some driver settings in the program, but could not figure out how to save the program after having done so.

The answer is that VEE 4.0 will not allow the user to re-save a secured program. Apparently there were complaints in earlier versions that security wasn't tight enough, so it was enhanced in VEE 4.0.

[*] VEE HINT / F10 Key On VEE PC Not Functional

* A customer had written a VEE program on HP-UX that trapped the F10 key to stop a test sequence. They moved the program to WinNT and all the F10 key would do was pause the program.

As it turns out, the F10 key is reserved by Windows ... we can't use it. We need to document this a little better.

[*] VEE HINT / VEE-UX Print Screen Magnifications

* Doing a print sceeen from VEE-UX can only give magnifications as factors of 1/3 -- 1/3, 2/3, 1, 4/3, and so on.

[*] VEE HINT / VEE-To-VEE RPC Limitations

* Newer VEEs cannot perform remote procedure calls (RPCs) to older VEEs, but the older VEEs can RPC to newer VEEs.

[*] VEE HINT / Bus I/O Monitor & LAN-HPIB

* A staffer at the TMO call center built a VEE program for a customer using a LAN-HPIB box at his end. He secured the program and shipped it out.

However, the customer had an HPIB card, not a LAN-HPIB box. He could use I/O manager to set up a device name for the Direct I/O and Driver Objects, but the call center person had also added a Bus I/O Monitor. The Bus I/O Monitor remained pointed to the original LAN-HPIB box name and address, and so gave an error message because it wasn't there.

This, as it turns out, is expected behavior. The Bus I/O Monitor is hooked to an interface, not a device. You can change a device to a different address, but since the Monitor is hooked to the interface. If that interface isn't there, it doesn't know where else to go.

[*] VEE HINT / Timeouts On Interface Events

* Interface Event objects support a timeout, but it doesn't do what you might think. All it does is determine how long the Interface Operations object will wait before failing to acquire an interface that is locked by another process.

[*] VEE HINT / No I/O Found & Other I/O Configuration Problems

* If your I/O doesn't work at all with VEE, please make sure you have installed the I/O libraries. While older versions of VEE installed them automatically, you have to do this as a separate exercise with current versions.

Also, if your SICL I/O config program seems to recognize the interfaces, but VEE does not, then you are likely running 16-bit SICL, and VEE 3.2 and above require 32-bit I/O.

Some users installing the old versions of VEE run into troubles with the automatic installation of SICL. This can be disabled with the "-noautosicl" option.

* If you have upgraded a PC from Win3 that had SICL on it to Win95 and then installed a later version of SICL on it, then you will have some copies of the same SICL files in the \Windows directory (the old Win3 files) and in the \Windows\System directory (the new Win95 files).

This can lead to segmentation errors in VEE. Check to see if you have SICL files in \Windows and if so, delete them.

[*] VEE HINT / VXLink Disappears

* If you have VXLink, reboot your PC with the VXI mainframe off, and don't run SURM, then the VEE Instrument Manager will not recognize the VXLink card as a valid interface and will drop its entries. Not a bug, just logical operation.

[*] VEE HINT / VEE Sun Serial Problem

* Simply put, it doesn't work at 19.2 kilobaud. No workaround and no VEE 4.X for Sun.

[*] VEE HINT / Dumping Error Codes To Files

* If you are having trouble just getting VEE to run, try changing the VEE invocation in Program Manager from:


   C:\VEE\VEE.EXE  

-- to:


   C:\VEE\VEE.EXE -STDERR:<some_error_file_name>  

This cute little feature allows you to dump any error output generated by VEE as it boots in a file of your choice.

[*] VEE HINT / Deleting UserLibraries Synch Problem

* A customer was loading 3 UserLibraries under VEE and then sequentially deleting them, using a loop. He was getting libraries deleted when he didn't want them deleted.

The problem turned out to be due to the fact that he had brought out the "library name" pin from the Delete Library object. This is a control pin, so it acts asynchronously, meaning that when he runs the program, it deletes the library that it was given as the last parameter in the previous run of the program.

The simplest fix is to not use the "library name" pin. Use separate Delete Library objects with the library names hardcoded and select the appropriate one with a demultiplexer, or -- if that's not possible -- do screwball things with gates or globals to ensure that the Delete Library object only gets the library name when it is required.

[*] VEE HINT / Out-Of-Memory Error Hint

* If you keep getting out-of-memory errors with a large program, try loading a small one first and then load the big one.

[*] VEE HINT / Memory Leaks As Programming Errors

* It is easy to write programs that leak memory under VEE, not because of any inherent defect in the product (though we have fixed many low-level memory leaks in the past) but because the language allows for almost transparent allocation of memory for data structures.

If your program seems to grow without limit, check the objects that allocate memory (like Collectors) to see if they could be continuously adding to existing arrays. Another trick is to use "totsize()" functions and AlphaNumeric objects to monitor the size of critical data structures as the program runs.

[*] VEE HINT / Error Trapping & Memory Leaks

* If you perform error trapping on a transaction or formula box, you can end up losing memory. VEE will try to build a parse tree to evaluate expressions, and if you get an error, the memory used for the parse tree will be lost.

If you see programs obviously leaking memory you might want to look for formula boxes with error pins that regularly generate errors during normal program flow. A VEE program should not have code that relies on errors occurring in normal operation.

This issue has been true in all versions of VEE and is likely to be an issue in all future versions of VEE, as there is little that can be done about it.

[*] VEE HINT / Duplicated Pins & Memory Leaks

* We ran into a really interesting memory leak on VEE that involved transaction boxes.

Suppose you have a transaction box that has two transactions that use the same output pin. Of course, since you don't get anything out of the transaction box until the transaction box has completed executing, the only thing you get out of the output pin is the last data written to it.

The problem is that if you wrote any data to it in a previous transaction, and that data is of a different type, then the memory allocated to store that data is lost to VEE. Keep on calling this transaction object and it keeps on leaking memory.

There is no fix for this -- it's too deeply buried in VEE -- but there's no reason to get caught by it, either. Just make sure that each transaction has its own output pin. If you just want to do a dummy read and don't care about the data, you can do a read to a NULL pin that doesn't exist and the data will be thrown away.

[*] VEE HINT / Printing Problems

* If you are trying to print a VEE graph or something like that and it comes out solid black, just go into "File -> Set Default Preferences -> Colors" and set "Trace Background" to white. You can similarly manipulate colors to correct other printing problems.

Also make sure that your Windows Printer driver is correctly configured to handle the graphics dumps. In particular, if you are getting misregistration of text, make sure you have the printer driver's "Print TrueType As Graphics" flag set.

* A customer at UC Berkeley was having troubles with printing classic VEE IDs on Win95. It appears to be a Win95 printer driver bug. To work around this, in your VEE.RC file (usually in the VEE install directory), find the 'Colors' section and modify it to look like:


   (Colors
      (Property "Instrument Panel White" "Black")
   )   

Restart VEE.

All white text on instrument panels will now show up in black (the printer driver doesn't seems to have any trouble with black). Note that the next Default Preference Save operation will overwrite this change.

Here's the full list of hidden colors:


   "Instrument Panel Lavender",   "Lavender",
   "Instrument Panel Dark Blue",  "Dark Blue",
   "Instrument Panel Dark Beige", "Dark Beige",
   "Instrument Panel Dark Brown", "Dark Brown",
   "Instrument Panel Brown",      "Brown",
   "Instrument Panel Dark Green", "Med Dark Green",
   "Instrument Panel Light Beige","Light Beige",
   "Instrument Panel White",      "White",

   "Instrument Panel Black",      "Black",
   "Instrument Panel Yellow",     "Yellow",
   "Instrument Panel Cyan",       "Cyan",
   "Instrument Panel Magenta",    "Magenta",
   "Instrument Panel Green",      "Green",
   "Instrument Panel Orange",     "Orange",
   "Instrument Panel Red",        "Red",
   "Instrument Panel Light Blue", "Light Blue",  

[*] VEE HINT / Compiling IDs

* If you are trying to get an instrument driver loaded into VEE and you get the error message: COMPILED ID IS OUT OF DATE -- it means you don't have an ID compiler that matches the VEE software. Possibly you have one left over from an earlier version of VEE or the old ITG software.

Note that in current versions of VEE you won't find the ID compiler in any of the Windows menus. No problem, if you try to load an uncompiled ID file under VEE, it will be automatically compiled.

[*] VEE HINT / Changed Device Names

* In VEE 3.0, the lab changed the rules for naming I/O devices to "alphanumeric only" (including underscores). This causes problems with people porting old programs, but it was necessitated by the fact that putting spaces and suchlike in device names really screwed up multidevice direct I/O; putting a space in the device name would put two device names in the transaction field, which wouldn't work.

To get around this problem, just pull the source VEE file into a text editor and do a search-replace on the offending device name. It was changed back in VEE 3.2.

[*] VEE HINT / IFC Pulsed

* If a device times out, VEE asserts an IFC. This bothers some instruments but this is the only way VEE can ensure that the card is back in a known condition. Not a bug.

[*] VEE HINT / Totsize Won't Handle Null Inputs Properly

* The TOTSIZE function won't return "0" when given a null input. This is because in formulas "null" evaluates to 0. Use the "Get Array Element" object instead. It has an output pin that gives the totsize and handles null inputs correctly.

[*] VEE HINT / Determining VEE Data Types

* If you want a program to be able to determine the data types of values, you can use Data -> Access Array -> Get Values. This has a Data Type output pin.

[*] VEE HINT / Hidden Popups

* If you make a pop-up UserFunction in which the objects on the panel completely cover the pop-up, you won't be able to move the panel with the mouse because the objects accept input focus.

[*] VEE HINT / Minor Sequencer Bug With Tolerances

* Gerard Keijzer in Amsterdam had an interesting one: he had a simple sequencer program as follows:


   +------------+
   |    Real    |
   +------------+
   | 1234567899 +--+--------------------+
   +------------+  |                    |   +-------------------------+
		   |                    |   |        Sequencer        |
		   |   +-------------+  |   +---+------------+--------+
		   |   |   Formula   |  +-->| A | test1(A) + | Return |
		   |   +---+---------+      |   |            | Log    |
		   +-->| A | A + 101 +----->| B |            | Error  +-->
		       +---+---------+      +---+------------+--------+  

The transaction has the form:


   +---------------------------------------------------------------+
   | [ TEST: ] [ test1  ] [   ENABLED   ]                          |
   | SPEC NOMINAL:        [A     ] [ TOLERANCE ] + [100 ] - [100 ] |
   | FUNCTION:      [B           ] [ LOGGING ENABLED ]             |
   | [  IF PASS  ] [  THEN CONTINUE  ]                             |
   | [  IF FAIL  ] [  THEN ERROR     ] [10  ]                      |
   | DESCRIPTION:  [Device test 1.                  ]              |
   |                                                               |
   |                [  OK  ]                  [Cancel]             |
   +---------------------------------------------------------------+  

This has the following features:

The problem is that the ERROR 10 on IF FAIL never occurs until the constant in the external formula reaches 223.5. It should fail on 101 but does not.

I thought this might be a floating-point issue but the range of values involved is well within the bounds of accurate floating-point operations.

* Unfortunately, the lab gets back to me and says that this is due to the use of the "almost equals" function, which operates oddly when the input values are high and tolerance range is low. Not a bug as such.

[*] VEE HINT / Array Comparisons

* If you try to perform comparisons between arrays where the array values have a wide variation, the comparisons will give unpredictable results. Best to concoct a UserFunction to do an element-by-element comparison.

[*] VEE HINT / Stop Objects

* Be very careful in the use of the Stop object. Do not use it inside UserFunctions or UserObjects to terminate a program, and do not use it in an unconstrained fashion -- like in a separate thread -- to stop a program. You can get serious errors doing this.

[*] VEE HINT / Lose Last Point On Graph Display

* In some cases, if you display data in an XY-Graph or similar object, you can lose the last point you want to display (more noticeable in small data sets). No fix right away.

[*] VEE HINT / Funny Missing Window Problem

* We ran into a really odd bug where a user couldn't use Program Explorer to bring up a UserObject window. I passed the following description of my experiments with it back to the callcenter:

It turned out the UserObject window was way off the display. There was no way to determine how it got there, and no further investigation was warranted, but it was an interesting bug.

[*] VEE HINT / File Dialogue Always Adds .VEE Extension

* A customer reported that no matter how he configured the VEE File Dialogue or what settings be put on it, he would always get a ".VEE" extension on the file name, even if the file already had an extension.

I confirmed this, but it turns out to be a Windows-ism associated with the File Dialogue. Same sort of thing happens with Visual BASIC.

[*] VEE HINT / Serial Buffer Size Stuck At 1KB On Win95

* That's right, it's a Win95 bug. We allow you to set up to 32 KB for compatibility with other platforms, but it's still 1 KB.

[*] VEE HINT / Integration Function Problems

* We got a VEE program from the Netherlands that demonstrated some odd "oscillation" features in the "integral()" function in VEE. The lab guy says that this is a characteristic of Simpson's Rule integration for the type of data the customer was using, and that we should have three types of integral functions:

Sounds like a good idea to me, but it may take a while to get to it.

[*] VEE HINT / VEE Process Priorities On HPUX

* We had a customer problem in Europe in which VEE performed an Execute Program on a C application under HP-UX. It appeared that the C program wasn't getting its fair share of execution time on the CPU, so the field person asked us what could be done to increase its priority.

There is actually an "rtprio" function under that can set the execution priority of an HP-UX application program, from a priority of 0 (highest) to 127 (lowest). It is invoked as follows:


   rtprio <priority from 0 to 127> <application> <application parameters>  

Whether this actually affected the customer problem was another question -- we had our doubts, particularly because HP-UX isn't truly a realtime system anyway, and it is very difficult to make its operation exactingly deterministic -- but it was something worthwhile to know anyway.

[*] VEE HINT / VEE Help Function Confusion

* A VEE user found that using the "811" topic in VEE 4.0's help() function:


   help("811",installDir() + "\\vee.hlp")  

-- gives an error that says "The topic does not exist", even though the "811" topic is listed in the help's index and find sections. But the "Accumulator" topic worked:


   help("Accumulator",installDir() + "\\vee.hlp")  

-- and presents the Accumulator topic help page as expected.

In fact, the vee.hlp help file is goofy. Some topics have odd entries, like:


  Use "on_features"    for the "On Features" help topic.
  Use "Adv_Dev_Config" for the "Advanced Device Configuration" help topic.
  Use "Complex_Pl"     for the "Complex_Plane" help topic.
  Use "Function"       for the "Math & Functions" help topic.
  Use "If_GE""         for the "If A >= B" help topic.
  Use "gglossary"      for the "glossary" help topic.
  Use "error_300"      for the "300" help topic.
  Use "error_811"      for the "811" help topic.  

In the specific case that led to the problem, the workable entry is:


   help("error_811",installDir() + "\\vee.hlp")  

[*] VEE HINT / Callable VEE Problem With Borland C

* It appears from customer reports that the libvapi.lib file required for Callable VEE does not work with Borland C++. It is unlikely to ever be updated to do so.

 TOP OF PAGE