Fonction escape()

Résolu
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012 - 27 févr. 2007 à 19:05
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012 - 27 févr. 2007 à 19:50
bonjour a tous,

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

merci

16 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 févr. 2007 à 19:22
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.
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 févr. 2007 à 19:07
Et que fait escape() en javascript ????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012
27 févr. 2007 à 19:09
http://fr.selfhtml.org/javascript/objets/independant.htm#escape



ca transforme les caractère spéciaux en chaine... exemple " " devient %20 etc etc
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 févr. 2007 à 19: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.
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 févr. 2007 à 19:30
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 #
0
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012
27 févr. 2007 à 19:30
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 févr. 2007 à 19:32
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 #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 févr. 2007 à 19:34
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 ?
0
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012
27 févr. 2007 à 19:34
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
27 févr. 2007 à 19:34
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 #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
27 févr. 2007 à 19:39
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




 
0
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012
27 févr. 2007 à 19:39
merci a tous pour votre aide
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2007 à 19:44
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2007 à 19:45
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 !
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2007 à 19:47
Et paf, complètement à côté du problème !
Sacré Jack . . .
0
cs_kalif Messages postés 362 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 24 août 2012
27 févr. 2007 à 19:50
ca pour etre rapide c'est rapide! lol
0
Rejoignez-nous