Fonction escape()

Résolu
Signaler
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012
-
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012
-
bonjour a tous,

existe t il en visual basic une fonction qui ferai la meme chose que escape() de javascript

merci

16 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Ce n'est pas ton explication qui m'a éclairé; mais la lecture du lien !...

En d'autres termes, tu sauhaiterais transformer une chaine de caractères en une concaténation des valeurs héxadécimales des valeurs ascii de chacun de ses caractères ? et tu voudrais que chaque valeur héxadécimale soit orécédée du signe % ?

alors :
1) asc("X") donne la valeur ascii d'un caractère X
2) Hex(Y) donne la valeur haxadécimale d'un nombre Y
3) le caractère & est un opérateur de concaténation, tel que "A" & "B" ===>>> "AB"

tu as là, me semble-t-il, tout ce qu'il te faut.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Et que fait escape() en javascript ????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012

http://fr.selfhtml.org/javascript/objets/independant.htm#escape



ca transforme les caractère spéciaux en chaine... exemple " " devient %20 etc etc
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Ah oui, quand même :

Il manque celà (pour extraire les caractères de ta chaîne un par un avant de les transformer et les concaténer)

Private Sub Command1_Click()
  la_chaine = "voilà une chaine"
  For i = 1 To Len(la_chaine)
    MsgBox Mid(la_chaine, i, 1)
  Next
End Sub

Il ne te manque maintenant ruien.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Tien regarde si ce code répond à ton besoin :

Private Function escape(chn As String) As String
Dim tmp As String, tmp1 As String
Dim i As Integer

For i = 0 To 31
    If Len(Hex(i)) < 2 Then tmp1 = "0" & Hex(i) Else tmp1 = Hex(i)
    tmp = Replace(tmp, Chr$(i), "%" & Hex(i))
Next
escape = tmp
End Function

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012

ok c'est juste, ca donne ca MsgBox Hex(Asc(" ")) deviens %20

mais je voudrai aller un peu plus loin, je voudrai savoir quel sont les caractère concerné par la fonction escape()

exemple:

var exemple = "salut toi";
document.write(escape(exemple)); 

la fonction renvoi "salut%20toi" c'est a dire qu'il transforme uniquement les caractère "spéciaux" ... je voudrai faire pareil
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Et en plus je me suis tromper.

Voila le code que je voulais te donner

Private Function escape(chn As String) As String
Dim tmp As String, tmp1 As String
Dim i As Integer

For i = 0 To 31
    If Len(Hex(i)) < 2 Then tmp1 = "%0" & Hex(i) Else tmp1 = "%" & Hex(i)
    tmp = Replace(tmp, Chr$(i), tmp1)
Next
escape = tmp
End Function

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
oui ?
et alors ?
Tu n'as qu'à transformer que si asc(ton_caractère) <= 31  (ou ce que tu veux)


 


où est donc le problème ?
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012

casy> ton code ne fonctionne pas... mais a vrai dire tout ce qui me manque c'est de savoir quels sont les caractères concerné par la fonction escape de javascript
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Je vais y arriver, faut pas s'affoler.

Faut juste rajouter tmp=chn avant la boucle For

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Private Sub Command1_Click()
  la_chaine = "voilà une" & Chr(18) & "chaine"
  yoyo = ""
  For i = 1 To Len(la_chaine)
    car = Mid(la_chaine, i, 1)
    If Asc(car) < 31 Then car = "%" & Hex(Asc(car))
    toto = toto & car
  Next
  MsgBox toto
End Sub




 
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012

merci a tous pour votre aide
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Comme Casy, je ne sais pas ce que fait la fonction Escape de JavaScript
Mais, ma boule de cristal et moi, pensons que tu désires interrompre un processus en cours avec la touche "Echap".
Si tu veux :

## Quitter (par exemple) une forme en appuyant sur cette touche Echap :
En supposant que tu possèdes un bouton "Quitter" sur ta forme, il suffit de mettre sa propriété Cancel à True

## Quitter un boucle "For-Next" ou "Do-Loop" :
- Donne la propriété KeyPreview à True à ta forme
- Dans la partie déclaration de ta forme, ajoute la déclaration suivante :
Dim bAnnuler As Boolean
- Dans la Sub nommée From_KeyDown, insère ce test :
If KeyCode = vbKeyEscape Then
   bAnnuler = True
   KeyCode = 0
End If
- Dans ta boucle For-Next ou Do-Loop, ajoute ce test :
For x = 0 To 100
   DoEvents   ' Nécessaire à la surveillance des évènements matériels
   If bAnnuler Then Exit For   ' Ou 'Exit Do' pour un Do-Loop
... ton code
Next x
If bAnnuler Then MsgBox "Boucle interrompue"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005 et 2006
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
lol, j'ai fait autre chose entre deux et me voilà relégué à la fin de la 2ème page de réponses !
: Tu pourras dire qu'on est rapide sur vbfrance !
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Et paf, complètement à côté du problème !
Sacré Jack . . .
Messages postés
362
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
24 août 2012

ca pour etre rapide c'est rapide! lol