Silverfrost Forums

Welcome to our forums

Calling .NET methods from FTN95 with enums

16 Sep 2010 4:01 #6951

The code below gives error 1119 - No .NET method matches this call.

      SUBROUTINE TESTIT(MDL)
C
      LIBRARY('MTSL.Data.dll')
      ASSEMBLY_EXTERNAL(NAME='MTSL.Data.Model.Count') MODELCOUNT
C      
      OBJECT('MTSL.Data.Model') MDL
      CHARACTER(LEN=24),PARAMETER::OBJECTTYPE='MTSL.Data.MTSLObjectType'
C
      INTEGER*4 NUM
C      
      NUM = MODELCOUNT(MDL, OBJECTTYPE%otPoint)
C
      WRITE(*,*) NUM
C
      RETURN            
      END

MTSL.Data.dll was written with C#. The class 'Model' has a method 'Count' that takes an enum as a parameter to return the number of items of that type. An instance of a 'Model' is passed to the FTN95 routine.

4 Oct 2010 1:38 #7034

I am assuming here that otPoint is an enum value? How is it declared (jn the C#)?


-- Admin Silverfrost Limited
8 Oct 2010 9:40 #7059

C# declaration of enum MTSLObjectType in MTSL.Data.dll -

	/// <summary>
	/// An enumeration to identify MTSL object types.
	/// </summary>
	public enum MTSLObjectType
	{
		otDataObject,
		otAttribObject,
		otRefObject,
		otAttribRefObject,

		// Main data types...

		otStation,
		otSetup,
		otObservation,
		otControl,
	   otPoint,
		otTriangle,
		otLink,
		otText,

		// Main survey types...

		otModel,

		// Add new types below...

		otNonTerrainNode,
	   otLoadFile,
	   otPointCode,
	   otLinkCode,
	   otSurfaceCode,
	   otLegend,
	   otModelDisplay
	}

Declaration of Method Model.Count in MTSL.Data.dll -

	/// <summary>
	/// Summary description for ModelClass.
	/// </summary>
	public class Model : MTSLAttributeDataObject
	{
...
...
        public int Count(MTSLObjectType ObjectType)
        {
            ArrayList arr = GetList(ObjectType);
            if (arr == null) return 0;

            return arr.Count;  
        }

        public ArrayList GetList(MTSLObjectType ObjectType)
        {
            switch (ObjectType)
            {
                case MTSLObjectType.otStation: return (ArrayList)FData[2];
                case MTSLObjectType.otSetup: return (ArrayList)FData[3];
                case MTSLObjectType.otControl: return (ArrayList)FData[4];
                case MTSLObjectType.otObservation: return (ArrayList)FData[5];
                case MTSLObjectType.otPoint: return (ArrayList)FData[6];
                case MTSLObjectType.otLink: return (ArrayList)FData[7];
                case MTSLObjectType.otTriangle: return (ArrayList)FData[8];
                case MTSLObjectType.otText: return (ArrayList)FData[9];
                case MTSLObjectType.otNonTerrainNode: return (ArrayList)FData[16];
                case MTSLObjectType.otLoadFile: return (ArrayList)FData[17];

                default: return null;
            }
        }
...
...
    }
Please login to reply.