VB/VB.Net Une conversion c# -> vb.net

A

Anonymous

Invité
#1
[RESOLU : Voir le message suivant]
Salut,

Ayant lu le tutoriel de RaphyTheGeek, a propos d'une authentification au serveur dofus en c# , je n'arrive déja pas a traduire le premier code qu'il indique :

Code:
 private void Log(string Text)
        {
            Action log_callback = (Action)delegate
            {
                logTextBox.Text += Text + "\r\n"; // Ajout du texte avec un saut à la ligne en fin.
                logTextBox.Select(logTextBox.Text.Length, 0); // On place le curseur à la fin de la zone de texte.
                logTextBox.ScrollToCaret(); // On descend la barre de défilement jusqu'au curseur.
            };
            this.Invoke(log_callback);
        }
Je suis passé par un site de conversion mais c'est ambigu le code qui me renvoit :

Code:
Private Sub Log(Text As String)
	Dim log_callback As Action = DirectCast(Function() Do
		logTextBox.Text += Text & vbCr & vbLf
		' Ajout du texte avec un saut à la ligne en fin.
		logTextBox.[Select](logTextBox.Text.Length, 0)
		' On place le curseur à la fin de la zone de texte.
			' On descend la barre de défilement jusqu'au curseur.
		logTextBox.ScrollToCaret()
	End Function, Action)
	Me.Invoke(log_callback)
End Sub
alors je me suis mis a bidouiller un peu tout pour réussir à convertir, mon problème est que je ne comprend pas la ligne :

Code:
Dim log_callback As Action = DirectCast(Function() Do
c'est ici que j'essaye de toucher un peu a tout, je n'ai pas la signification du Do ici, pourquoi une function ...

Il me semble que ça a à voir avec les delegate, j'ai beau chercher sur msdn, je ne trouve pas un code similair à celui-ci pour le comprendre. Le reste du code , aucun problème pour comprendre, c'est juste cette foutu ligne incompréhensible.

Merci d'avance pour votre aide

Edit : Je suis passer par des message box pour obtenir ce que je voulais
 
A

Anonymous

Invité
#2
Prend overedge.
D'apres toons c'est onveredge traduit en C# et il a voulu supprimer plein de trucs
 
A

Anonymous

Invité
#3
Résolu, en bidouillant un petit peu sur les source de Overedje, j'ai finalement reussi.

Voici ce que ça donne pour ceux qui aurait eu le même problème :

Donc j'ai une RichTextBox que j'ai nommé : LogTextBox

Code:
Imports System.Net.Sockets
Imports System.Threading

Public Class TutorielDelegate

    Delegate Sub MylogHandler(ByVal x As String)
    Dim Chater As New MylogHandler(AddressOf MyChatProc)

    Sub MyChatProc(ByVal x As String)
        Console.Write(x)
        LogTextBox.AppendText(x)
        If LogTextBox.TextLength - x.Length < 0 Then
            Me.LogTextBox.SelectionStart = 0
        Else
            Me.LogTextBox.SelectionStart = Me.LogTextBox.TextLength - x.Length
        End If
        Me.LogTextBox.SelectionLength = x.Length

        Me.LogTextBox.SelectionStart = Me.LogTextBox.TextLength
        Me.LogTextBox.ScrollToCaret()
    End Sub
End Class
ce qui donne par exemple pour l'authentification du serveur :

Code:
 Try
            _Socket.Connect("213.248.126.180", 5555)
            ' Connexion au serveur d'authentification.
            ' On test l'état de la connexion.
            If _Socket.Connected Then
                LogTextBox.Invoke(Chater, "La connexion au serveur d'authentification est réussie." & vbNewLine)
                Dim _ReceptionThread = New Thread(New ThreadStart(AddressOf Reception))
                _ReceptionThread.Start()
            Else
                LogTextBox.Invoke(Chater, "La connexion au serveur d'authentification a échouée." & vbNewLine)


            End If
        Catch sock_ex As SocketException
            LogTextBox.Invoke(Chater, "[SocketException] " + sock_ex.Message)
        End Try
Donc au final , on execute comme ceci :
Code:
LogTextBox.Invoke(Chater, "La connexion au serveur d'authentification est réussie." & vbNewLine)
J'imagine que le code peu largement etre optimisé, mais la question n'est pas là.
Et voila , ça fonctionne.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#4
lolodu92 a dit:
Prend overedge.
D'apres toons c'est onveredge traduit en C# et il a voulu supprimer plein de trucs
pour le parser en tout cas c'est celui d'overedge avec en moins la gestion des messages de plus de 8ko , y'avais eu d'ailleur une conversation de raphy la dessus , en cherchant on doit pouvoir retrouver , il etait pourtant sur que ca marchait mais ceux qui ont essayé d'ouvrir une banque (bien remplie) par exemple ont tous eu des problemes.
thomasdoudou a dit:
Code:
LogTextBox.Invoke(Chater, "La connexion au serveur d'authentification est réussie." & vbNewLine)
J'imagine que le code peu largement etre optimisé, mais la question n'est pas là.
Et voila , ça fonctionne.
je vais quand meme poser une question meme si je connais sa reponse :
c'est vraiment utile tout ca avec un .append ?
Code:
        If LogTextBox.TextLength - x.Length < 0 Then
            Me.LogTextBox.SelectionStart = 0
        Else
            Me.LogTextBox.SelectionStart = Me.LogTextBox.TextLength - x.Length
        End If
        Me.LogTextBox.SelectionLength = x.Length

        Me.LogTextBox.SelectionStart = Me.LogTextBox.TextLength
        Me.LogTextBox.ScrollToCaret()
 
Haut Bas