none
C# out no VB.NET RRS feed

  • Pergunta

  • Boa tarde

    Pessoal estou convertendo um código de C# para VB.NET, esta quase tudo pronto porém tem uma chamada de função que esta apresentando problemas, em c# fica da seguinte forma:

    ret = this.m_UCBioAPI.Enroll(null, out hNewFIR, null, UCBioAPI.Type.TIMEOUT.DEFAULT, null, null);

    em vb.net estou tentando da seguinte forma:

    ret = Me.m_UCBioAPI.Enroll(Nothing, hNewFIR, Nothing, UCBioAPI.Type.TIMEOUT.DEFAULT, Nothing, Nothing)

    usei alguns conversores que tem na net mas a conversão foi a mesma. A mensagem de erro que me apresenta esta abaixo, acho que todo o problema esta nessa parte do C# "out hNewFIR" pois acho que o out não existe no vb.net e precisa ser usado de outra forma, isso se entendi bem o erro. Alguém tem ideia?

    Error 4 Overload resolution failed because no accessible 'Enroll' is most specific for these arguments:
        'Public Function Enroll(StoredTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.INPUT_FIR, ByRef NewTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, Payload As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.FIR_PAYLOAD, Timeout As Integer, AuditData As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, WindowOption As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.WINDOW_OPTION) As UInteger': Not most specific.
        'Public Function Enroll(ByRef StoredTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.FIR_TEXTENCODE, ByRef NewTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, Payload As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.FIR_PAYLOAD, Timeout As Integer, AuditData As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, WindowOption As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.WINDOW_OPTION) As UInteger': Not most specific.
        'Public Function Enroll(ByRef StoredTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.FIR, ByRef NewTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, Payload As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.FIR_PAYLOAD, Timeout As Integer, AuditData As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, WindowOption As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.WINDOW_OPTION) As UInteger': Not most specific.
        'Public Function Enroll(ByRef StoredTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, ByRef NewTemplate As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, Payload As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.FIR_PAYLOAD, Timeout As Integer, AuditData As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.HFIR, WindowOption As UNIONCOMM.SDK.UCBioBSP.UCBioAPI.Type.WINDOW_OPTION) As UInteger': Not most specific. C:\vb_net\sdk_testes\virdi\VB .NET_FastSearchDemo (teste template 400bytes) v3.0\FastSearch_Virdi_VB\FastSearch_Virdi_VB\Form1.vb 53 15 FastSearch_Virdi_VB


    sexta-feira, 1 de março de 2013 18:08

Respostas

  • Public Partial Class Form1
    	Inherits Form
    	Private Sub btnIdentify_Click(sender As Object, e As EventArgs)
    		Dim ASDF As New Form1(New ResultDelegate(ResultCallback))
    		Dim thread As New Thread(New ThreadStart(ASDF.MyIndentifyThread))
    	End Sub
    End Class


    Leonardo Garcia
    pensouweb@hotmail.com

    sexta-feira, 1 de março de 2013 21:02
  • Não existe algo que seja equivalente ao OUT do C# em vb.net. O que você pode fazer é o seguinte:

    EM C#

    public void Teste(int x, ref int y, out int z) { x++; y++; z = 5; }

    ---------------------------------------------------------

    EM VB.NET

      Public Sub Teste(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
         x += 1
         y += 1 
         z = 5 
      End Sub
    • Marcado como Resposta Alexandre CCarmo segunda-feira, 4 de março de 2013 19:40
    domingo, 3 de março de 2013 14:36

Todas as Respostas

  • ret = Me.m_UCBioAPI.Enroll(Nothing, hNewFIR, Nothing, UCBioAPI.Type.TIMEOUT.[DEFAULT], Nothing, Nothing)



    Leonardo Garcia
    pensouweb@hotmail.com

    sexta-feira, 1 de março de 2013 19:09
  • Obrigado pela ajuda mas a mensagem de erro permanece a mesma. Será que ainda existe outra forma?

    Fora essa linha estou com dificuldade de converter as linhas abaixo:

    public partial class Form1 : Form
    {

    ...

     private void btnIdentify_Click(object sender, EventArgs e)
            {

    ...

    Form1 ASDF = new Form1(new ResultDelegate(ResultCallback)); Thread thread = new Thread(new ThreadStart(ASDF.MyIndentifyThread));

    ..

    }

    ...

    Não entendi como chamar esse Delegade e Thread no vb.net

    Tem uma chamada de função que fiz converti também e esta dando erro, a função é essa:

    Private Function MyFastSearchCallBack(ByRef pParam0 As UCBioAPI.FastSearch.CALLBACK_PARAM_0, pUserParam As IntPtr) As UInteger
            Dim fpInfo As UCBioAPI.FastSearch.FP_INFO = m_fpInfoList(CInt(pParam0.MatchedIndex))
    
            'this.Invoke(new MethodInvoker(() => { pgbIdentify.Value = ++m_nSearchCount; })); //fw 3.0
            'pgbIdentify.Value = ++m_nSearchCount;
            UpdatepgbIdentify()
            SetIndentifyStatus(String.Format("Index:{0},UserID:{1}, FP ID:{2}, Sample#:{3}, Score:{4}", m_nSearchCount, fpInfo.ID, fpInfo.FingerID, fpInfo.SampleNumber, pParam0.MatchedScore))
    
            If m_bStopFlag Then
                Return UNIONCOMM.SDK.UCBioBSP.UCBioAPI.FastSearch.CALLBACK_RETURN.[STOP]
            Else
                Return UNIONCOMM.SDK.UCBioBSP.UCBioAPI.FastSearch.CALLBACK_RETURN.OK
            End If
        End Function


    a chamada é essa que esta em um handle click de um button:

    Dim fastSearchCallback As New UCBioAPI.FastSearch.FASTSEARCH_CALLBACK(MyFastSearchCallBack)

    Esta apresentando esse erro:

    Error 5 Delegate 'UNIONCOMM.SDK.UCBioBSP.UCBioAPI.FastSearch.FASTSEARCH_CALLBACK' requires an 'AddressOf' expression or lambda expression as the only argument to its constructor. C:\vb_net\sdk_testes\virdi\VB .NET_FastSearchDemo (teste template 400bytes) v3.0\FastSearch_Virdi_VB\FastSearch_Virdi_VB\Form1.vb 304 83 FastSearch_Virdi_VB

    Esta informando que falta um addressof, mas não consegui colocar ele. Como faço isso?


    sexta-feira, 1 de março de 2013 19:35
  • Boa tarde!

    Empresa que atua no mercado tecnológico realizando consultoria no desenvolvimento de soluções em sistemas de informação, busca no mercado Desenvolvedor .Net Pleno ou Sênior.

    Atividades:

    Atuar como analista/desenvolvedor utilizando tecnologia DOTNET. Participando no desenvolvimento e manutenção de projetos WEB com linguagem C#.

    Experiência:

    Necessário conhecimento em DOTNET, SQL Server, HTML, JavaScript.
    Desejável conhecimento CSS, Jquery.

    Tecnologias Envolvidas:

    DOTNET, HTML, AJAX, CSS, SQL Server

    Superior:

    Completo ou Cursando.

    Vagas:

    1 Vaga para Sênior
    2 vagas para Pleno

    Local: Centro – RJ

    Os interessados, enviar o currículo para o e-mail rh@infobase.com.br  com a vaga no assunto.

    Att,

    Rh Infobase

    sexta-feira, 1 de março de 2013 20:08
  • Cara como você entra no meio de uma discussão para anunciar vagas? Vamos ter mais respeito.

    Quem estiver lendo esse post por favor ignorem o post do cara acima, preciso de ajuda nas dúvidas que adicionei

    sexta-feira, 1 de março de 2013 20:19
  • Public Partial Class Form1
    	Inherits Form
    	Private Sub btnIdentify_Click(sender As Object, e As EventArgs)
    		Dim ASDF As New Form1(New ResultDelegate(ResultCallback))
    		Dim thread As New Thread(New ThreadStart(ASDF.MyIndentifyThread))
    	End Sub
    End Class


    Leonardo Garcia
    pensouweb@hotmail.com

    sexta-feira, 1 de março de 2013 21:02
  • Não existe algo que seja equivalente ao OUT do C# em vb.net. O que você pode fazer é o seguinte:

    EM C#

    public void Teste(int x, ref int y, out int z) { x++; y++; z = 5; }

    ---------------------------------------------------------

    EM VB.NET

      Public Sub Teste(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
         x += 1
         y += 1 
         z = 5 
      End Sub
    • Marcado como Resposta Alexandre CCarmo segunda-feira, 4 de março de 2013 19:40
    domingo, 3 de março de 2013 14:36
  • Obrigado pessoal
    segunda-feira, 4 de março de 2013 19:40