Here is a fragment of some code I wrote.  It is full of errors.  If anyone can explains some or all of them, that would be great:
#COMPILE EXE
#DIM ALL
#INCLUDE ONCE "WIN32API.INC"  ' include windows api calls
MACRO BOOLEAN = INTEGER
MACRO TRUE = -1
MACRO FALSE = 0
$MyClassGuid = "{2e4ff4cf-776c-4bb4-bef5-1daad3362511}"
$MyInterfaceGuid = "{243c8ee5-35ae-4c17-a4d8-a2952cdcac3c}"
CLASS c_ClassTryTranslatingThis $MyClassGuid as COM
  INTERFACE i_ClassTryTranslatingThis $MyInterfaceGuid
  INHERIT AUTOMATION
LETS STOP HERE, I ALREADY GET AN ERROR: WHICH IS:
' CLASS c_ClassTryTranslatingThis $MyClassGuid AS COM  - invalid string length !
APPARENTLY THERE IS SOMETHING WRONG WITH THE GUID STRING
NOW LETS CONTINUE:
Private Type myStructTypeWithString
   strfield As String
   intField As Integer
End Type
THE ABOVE IS REJECTED.
SO I GET RID OF THE 'PRIVATE' PREFIX AND GET ANOTHER ERROR: 'ERROR 476 :  Block/scanned statements NOT allowed here
ALSO: CONSTANTS CANNOT BE DECLARED WITHIN THE CLASS - I GET AN ERROR FOR THAT.
ALSO, THE FOLLOWING LINE IS REJECTED:  
 METHOD getCurrency() PRIVATE  As Currency
AS IS THIS ONE:
  MsgBox EXE & Str$(59.7)  
   
Basically, I want to create a class that can be used as a com object from other classes, and I want the other classes to be able to pass UDTs (user-defined-types) to the METHOD, and the logical place to define those UDTs seems to be in the class, and I want some methods to be PRIVATE (but the private keyword above did not work) and others EXPORT.   
Any advice is appreciated.
			
			
			
				I am sure the help can, seems you totally avoided the help to learn some syntax and dumped some vb code in your editor?
			
			
			
				Yes, it looks VB-like code.
Quote
LETS STOP HERE, I ALREADY GET AN ERROR: WHICH IS:
' CLASS c_ClassTryTranslatingThis $MyClassGuid AS COM  - invalid string length !
APPARENTLY THERE IS SOMETHING WRONG WITH THE GUID STRING
They must defined as:
$MyClassGuid = GUID$("{2e4ff4cf-776c-4bb4-bef5-1daad3362511}")
$MyInterfaceGuid = GUID$("{243c8ee5-35ae-4c17-a4d8-a2952cdcac3c}")
Quote
SO I GET RID OF THE 'PRIVATE' PREFIX AND GET ANOTHER ERROR: 'ERROR 476 :  Block/scanned statements NOT allowed here
You can't use dynamic strings in an structure. You have to change strfield As String to strfield As String * number of characters.
Quote
ALSO, THE FOLLOWING LINE IS REJECTED: 
 METHOD getCurrency() PRIVATE  As Currency
Remove PRIVATE.
Quote
AS IS THIS ONE:
  MsgBox EXE & Str$(59.7)  
Change it to MsgBox EXE.PATH$ & Str$(59.7) 
			
				Hi Murray,
Look at the power basic assistance. It may help you further. You wanted a private method. A CLASS method is private
Quote
What is a Class Method?
A CLASS METHOD is one which is private to the class in which it is located.  That is, it may only be called from a METHOD or PROPERTY in the same class.  It is invisible elsewhere.  The CLASS METHOD must be located within a CLASS block, but outside of any INTERFACE blocks. This shows it is a direct member of the class, rather than a member of an interface.
CLASS MyClass
  INSTANCE MyVar AS LONG
  CLASS METHOD MyClassMethod(BYVAL param AS LONG) AS STRING
    METHOD = "My" + STR$(param + MyVar)
  END METHOD
  INTERFACE MyInterface
    INHERIT IUNKNOWN
    METHOD MyMethod()
      Result$ = ME.MyClassMethod(66)
    END METHOD
  END INTERFACE
END CLASS
Regards Peter
			
				Don't forget the hidden feature to hide a whole interface.
ActiveX allows you to have multiple interfaces in a single class.