It is a good idea not to try and create a class with the same label as a table in the DCT. At least in my case it wasn’t, I was getting a bunch of silly compiler errors and one that I had not seen before ISL ERROR: 0. Renamed the class… all is well!
Any other odd compiler errors you have seen lately?
Edit: Actually, I am still getting this even after renaming the class. Damn! I will keep looking.
ISL is an internal “language” that is used by all of the TopSpeed
programming languages, including c, c++, Modula-2, and Clarion
(but not the Assembler).
These languages are first translated into a common intermediate (ISL)
that is fed to the backend compiler.
An ISL error indicates that you have done something that can’t be
properly translated or that exceeds a linker requirement.
Ok, so now it seems to be something to do with the implements on my class declaration. Totally weird. I will try and sort it out later and report back here.
The help mentions that a Construct may not have VIRTUAL but it does not say the same for Destruct. I have a feeling I started putting it on the destructors for no good reason other than it was on there in examples when I was learning to write classes. It does seem odd though and I wonder if a parent destructor is automatically called when the VIRTUAL is present?
Pretty sure this is not the cause of the ISL ERROR though as from a quick look at the code I have done that in another place although admittedly not with a class that uses IMPLEMENTS.
Don’t think it has to do with the Implements. It has to do with construct and destruct. I am using my own template to generate the class methods as a local class and the moment I add a construct and destruct method, I get the ISL error on compile, delete those two methods and it compiles fine
Turns out that removing the Construct and Destruct just delayed the issue, because when you call CInt.Init() or CInt.Kill() you are back to the ISL Error. Calling any of the other methods work fine.