Aide convertir une ligne de code irc en vb

Résolu
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012 - 17 sept. 2006 à 20:01
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012 - 18 sept. 2006 à 22:33
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

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
17 sept. 2006 à 21:13
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 00:00
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 #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
17 sept. 2006 à 22:00
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 #
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
17 sept. 2006 à 22:27
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
17 sept. 2006 à 22:30
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.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
17 sept. 2006 à 23:25
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 #
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
17 sept. 2006 à 23:49
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
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
18 sept. 2006 à 00:05
ok merci
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
18 sept. 2006 à 00:07
je vient d'essayer test = String("A", 10) message erreur.

est-ce que cela fonctionne avec vb6
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 09:19
C'est quoi le message d'erreur ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
18 sept. 2006 à 10:01
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 10:05
C'était pour voir si quelqu'un suivait

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 10:14
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 #
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
18 sept. 2006 à 22:02
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 22:11
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 #
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
18 sept. 2006 à 22:19
c'est la police par defaut, minuteje vais essayer sa
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
18 sept. 2006 à 22:23
YOUPI!!! merci a toi
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 22:30
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 #
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 22:31
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 #
0
DraaFil Messages postés 264 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 23 mars 2012
18 sept. 2006 à 22:33
Tout fonctionne correctement donc merci a tous, le dossier est clo
0
Rejoignez-nous