Aide convertir une ligne de code irc en vb

Résolu
Signaler
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012
-
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012
-
Bonjour a tous,

Voila, j'ai une ligne de code qu'on ma donne, mais le probleme, c'est qu'elle est en irc et non en vb. j'aurais besoin de vous pour m'aider à la rendre compatible en VB et me donne de l'info sur les function utilisae dans cette ligne.

/write Etats.lts �3;9$nick $str($chr(160),$calc(40 - $len($nick))) $nopath($filename) $str($chr(160),$calc(40 - $len($nopath($filename)))) $get($nick).pc 

Voici les function que je veux traduire.
Pour votre information  ce code permet l'alignement de chaine de caractere

$str(a,n) = repète n fois le caractère a
$len(abc) = donne le nombre de caractère qu'il y a dans "abc"
$calc() = effectue une opération (en VB y'a pas besoin de fonction il me semble)
$chr(numéro) = donne le caractère ASCII qui correspond au numéro

Merci
DraaFil

20 réponses

Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Salut !

Pour la fonction Str(), je suis quasiment sûr qu'il existe une fonction identique en vb mais je ne m'en rapelle plus et je ne la retrouve plus la comme ca, si je me trompe ou que personne ne sait te la donner, tu peux toujours remplacer

$str(a,n) -> Replace(Space(n), " ", a)

$len("abc") -> len("abc") (oui oui c'est tout à fait pareil)
En effet tu n'as pas besoin de calc
$chr est également identique
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Julien ne se rappelant pas la fonction, est passé par un chemin détourné.

Explication :
Space(n) te renvoie une chaine de caractères composée de n espaces.
Replace(chn,carX,carY) remplace dans la chaine chn tous les caractères carX trouvés par les caractères carY

Replace(Space(n), " ", "a") remplace dans chaine de caratères renvoyée par Space (soit n espaces), tous les " " (espaces) par le caractère a. Tu te retrouve donc avec une cahine de caractères contenant n fois "a".

Ce que fait plus simplement la fonction String( "a" , n ), qui est la fonction que Julien cherchait au départ.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Elle n'est pourtant pas difficile à trouver Julien.

$str(a,n) devient String(n,a)

$len()  est à remplacer par Len() ou mieux Len$()
idem pour $chr à remplacer par Chr() ou mieux Chr$().

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Oui mais elle n'est plus en .Net :( ou en tout cas plus sous ce nom... Rhaalala je vais réinstaller VB6 rien que pour répondre aux questions :p

Julien.
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
7
Toutes mes excuses, elle existe bien sous ce nom...
A ma défense : il ne s'agit pas tout à fait d'une fonction mais des constructeurs d'un objet String... (On ne peut pas vraiment appeler ca une fonction si ?)

Julien.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Alors pour être exact (accrochez vous, il faut suivre), la fonction String deVB6 a disparue en .NET.
La fonction String$ de VB6 est, elle, remplacée par le constructeur de classe String en .NET

Les différences :
En .NET, le type variant a disparu, donc toutes les fonctions String, Len, Left, Mid, .... ne sont plus supportées.
En .NET, le type de variable String est remplacé par la classe String.
Par conséquent, les fonctions String$, Len$, Left$, Mid$, ... qui renvoyées une variable string en VB6, renvoient désormais, en .NET, une classe String. Dans leurs métamorphoses, elles en ont perdues leur "$", puisque il n'y a plus lieu de distinguer les fonctions renvoyants des variants de celles renvoyant des strings.

Merci Microsoft de nous simplifier les choses.

Pour résumer en VB6 on écrivait
    Dim Toto as String
    Toto = String(12,"A")

Désormais en .NET, il faut écrire
    Dim Toto as String
    Toto = String("A",12)

CQFD

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

merci pour vos info mias vous parler de string pour ce qui est de $str, mais la fonction $str repete n fois le caractere et ce que vous sembler me dire que Replace(Space(n), " ", a)
 est pareil, mais pourtant cela remplace. Donc si je comprend bien, cela ne fais pas pareil

Merci
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

ok merci
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

je vient d'essayer test = String("A", 10) message erreur.

est-ce que cela fonctionne avec vb6
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
C'est quoi le message d'erreur ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
73
ca doit surement t'indiquer que tu as inversé l'odre des paramètres...

test = String$ ( 10 , "A" )  fonctionnera sans nul doute beaucoup mieux

en passant, casy, Len$ n'existe pas (inattention, quand tu nous tiens ^^)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
C'était pour voir si quelqu'un suivait

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Vérification : effectivement, c'est moi qui est fait une erreur, j'ai mélangé VB6 et .NET

Donc en VB6 ça donne
Dim Test as String
Test =  String(10,"A")

et en .NET ça donne
Dim Test as String
Test = New String("A",10)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

merci as tous pour votre aide, cela fonctionne mais j'ai quand meme un probleme, la premier colonne est correct, mias la deuxieme decale de 1 a 3 caractere. voici mon code et l'exemple de ce que cela donne. Merci si vous trouver pkoi.

Private Sub cmdImprimer_Click()
    Dim imgLogo As StdPicture
    Dim CheminLogo, DocTexte As String
    Dim Vals As String
    Dim FileNb As Integer: FileNb = FreeFile()
    Dim Var() As String
   
    'INITIALISATION DE L'IMAGE
    CheminLogo = App.Path & "\logo.jpg"
    Set imgLogo = LoadPicture(CheminLogo)
   
    'ENTETE DU DOCUMENT
    Printer.ScaleMode = vbMillimeters
    Printer.PaintPicture imgLogo, 91, 0
    'Printer.CurrentX = 80
    'Printer.CurrentY = 15
    'Printer.Print "LISTE TÉLÉPHONIQUE"
    'Printer.Line (0, 30)-(210, 30)
  
    Printer.CurrentY = 40
    Printer.FontSize = 12


    Open Patch For Input As #FileNb
        Do While Not EOF(FileNb)
            DocTexte = ""
            Line Input #FileNb, Vals
            If Right$(Vals, 1) = ";" Then
                Vals = Left$(Vals, Len(Vals) - 1)
            End If
            Var = Split(Vals, ";")
            MsgBox Var(1)
            MsgBox Var(2)
            DocTexte = Var(1) & Replace(Space(40 - Len(Var(1))), " ", Chr(160)) & Var(2) & Replace(Space(40 - Len(Var(2))), " ", Chr(160)) & Var(3)
            MsgBox DocTexte
            Printer.Print DocTexte
            
        Loop
    Close #FileNb
Printer.EndDoc
End Sub

EXEMPLE:

eeeee                                          aaaaaaa
aaaaa                                           dddd
dfgdfgddfg                                       sdfsf
dsfgdfgdfgsadf                               sdffff

ligne du fichier en question (txt)
1;Dubois;Eric;450-560-4531;450-230-6557;189, Bruno-Sorel Saint-Julien J76 2E6
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Avec quelle police imprime-tu tes données ?

As-tu essayer avec une police à espacement fixe, MS Sans Serif ou Courrier New par exemple.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

c'est la police par defaut, minuteje vais essayer sa
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

YOUPI!!! merci a toi
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Sinon tu as la possibilité de positionner manuellement le curseur, comme ça tu n'auras pas de surprise.

   Open Patch For Input As #FileNb 
        Do While Not EOF(FileNb) 
            DocTexte = "" 
            Line Input #FileNb, Vals 
            If Right$(Vals, 1) = ";" Then 
                Vals = Left$(Vals, Len(Vals) - 1) 
            End If 
            Var = Split(Vals, ";") 
<strike>            MsgBox Var(1) 
            MsgBox Var(2) 
            DocTexte = Var(1) & Replace(Space(40 - Len(Var(1))), " ", Chr(160)) & Var(2) & Replace(Space(40 - Len(Var(2))), " ", Chr(160)) & Var(3) 
            MsgBox DocTexte 
            Printer.Print DocTexte </strike>
            Printer.Print Var(1); 
            Printer.CurrentX = 80 
            Printer.Print Var(2); 
            Printer.CurrentX = 160 
            Printer.Print Var(3) 

        Loop 
    Close #FileNb 

<small>Coloration syntaxique
automatique</small>

NB : surtout noublis pas le ; après Var(1) et Var(3), c'est pour indiquer de ne pas revenir à la ligne, li'mpression n'est pas finie.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Oupppssss

Correction :

NB : surtout n'oublis pas le ; après Var(1) et Var(2), c'est pour
indiquer de ne pas revenir à la ligne, l'impression n'est pas finie.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
264
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
23 mars 2012

Tout fonctionne correctement donc merci a tous, le dossier est clo