none
ctfindfirst no me funciona RRS feed

  • Pregunta

  • buenos dias,

    el problema radica cuando hago a funcion

     HandleFirstsum = funcionesCTAPI.ctFindFirst(HandleConexion, System.Text.Encoding.ASCII.GetBytes("AlarmSummary"), System.Text.Encoding.ASCII.GetBytes("*"), HandleAlarmaSum, 0)

    entonces aqui no devuelve ningun valor pero si en vez de poner AlarmSummary pongo otro szTableName como por ejemplo AdvAlm si que devuelve un valor y funciona 

    a que se debe que no funcione con AlarmSummary

    muchas gracias 

    miércoles, 28 de agosto de 2019 11:50

Todas las respuestas

  • Habría que ver cómo tienes hacha la declaración del extern para ctFindFirst. Dado que el parámetro es un LPCTSTR, normalmente en la declaración de .NET se declara como String y el Marshaller de Platform/Invoke hace internamente la conversión. Pero en tu caso no le estás pasando strings, sino que le estás pasando arrays de bytes (obtenidos mediante GetBytes). Incluso aunque la declaración lo permita, me pregunto cómo es posible que funcione, dado que el GetBytes no mete al final el carácter de terminación (ascii cero) requerido por la cadena en la API (mientras que el marshaller de strings sí que lo mete).

    https://www.citect.schneider-electric.com/webhelp/citect800/Content/ctFindFirst.html

    • Propuesto como respuesta Pablo Rubio miércoles, 28 de agosto de 2019 15:42
    miércoles, 28 de agosto de 2019 13:58
  • buenos días gracias por tu respuesta pero hice las modificaciones que me dijiste y sigue sin devolver valor con alarmsummary 

     HandleFirstsum = funcionesCTAPI.ctFindFirst(HandleConexion, TipoVariableALeer, "*", HandleAlarmaSum, 0)

    y ctFinFirst la tengo declarada de esta forma 

      <DllImport("CTAPI.dll", BestFitMapping:=True, CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.Ansi)> _
        Public Shared Function ctFindFirst(ByVal hCTAPI As IntPtr, ByVal szTableName As String, ByVal szFilter As String, ByRef pObjHnd As IntPtr, ByVal dwFlags As Integer) As IntPtr
        End Function

    no se si se te ocurre algo más o ves algún fallo

    no entiendo por que con unos szTableName devuelve valores y con otros devuelve cero

    mucha gracias


    • Editado ruru29 jueves, 29 de agosto de 2019 7:18
    • Propuesto como respuesta Pablo Rubio viernes, 30 de agosto de 2019 18:19
    jueves, 29 de agosto de 2019 7:13