CHR$? c'est quoi?

Résolu
totalhackerz Messages postés 33 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 30 octobre 2007 - 1 sept. 2006 à 14:24
lcv1212 Messages postés 18 Date d'inscription mercredi 6 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006 - 12 oct. 2006 à 16:03
Bonjour, jai un petit programme en QuickBasic pour commander des relait sur le port com1
et jaurai voulu savoir à quoi sert CHR$ ?

CLS
DIM inbuf(800)
DIM outbuf(3)

OPEN "com1,19200,n,8,1,bin,cs,ds" FOR RANDOM AS #1

outbuf(0) = 3
outbuf(1) = 1
outbuf(2) = 1
outbuf(3) = outbuf(0) XOR outbuf(1) XOR outbuf(2)

PRINT #1, CHR$(outbuf(0)) + CHR$( outbuf(1)) + CHR$( outbuf(2)) + CHR$( outbuf(3))

END

si vous avai des question ésité pas,
merci davance

15 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 sept. 2006 à 14:34
CHR$ permet de convertir ton nombre en caractère.

Ainsi tu convertir respectivement tes nombres 0, 1, 2, 3 en caractère ayant pour code ascii 0,1,2,3.

A ne pas confondre avec les chiffres (caractères) 0,1,2,3 qui ont pour code ascii 48,49,50 et 51

---- 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
1 sept. 2006 à 14:36
Oupps erreur de ma part

Quand je parle des nombres 0,1,2,3 il faut comprendre les nombres contenus dans outbuf(0), outbuf(1),... soit 3,1,1,3

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 sept. 2006 à 15:05
Salut,
MSDN Dit:
Renvoie une valeur de type
<object id= "alink_4" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_4.Click() String] contenant le caractère associé au
<object id="alink_5" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_5.Click() code de caractère] indiqué.

Syntaxe

Chr( charcode )

L'
<object id ="alink_6" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_6.Click() argument] charcode est une donnée de type <object id ="alink_7" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_7.Click() Long] qui identifie un caractère.

Remarques

Les nombres compris entre 0 et 31 sont identiques aux codes standard
<object id ="alink_8" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_8.Click() ASCII] non imprimables. Par exemple, la fonction Chr( 10) renvoie un caractère de saut de ligne. La valeur de l'argument charcode est normalement comprise entre 0 et 255. Toutefois, sur des systèmes
<object id ="alink_9" type= "application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_9.Click() DBCS], la valeur de l'argument charcode peut être comprise entre -32768 et 65535.

Note    La fonction ChrB est utilisée pour traiter sous forme d'octets les données d'une valeur de type String. Au lieu de renvoyer un caractère codé sur un ou deux octets, la fonction ChrB renvoie toujours un seul octet. La fonction ChrW renvoie une valeur de type String contenant le caractère
<object id ="alink_10" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"></object>[javascript:alink_10.Click() Unicode], sauf sur les plates-formes qui ne gèrent pas ce caractère. Dans ce cas, le comportement est le même que pour la fonction Chr.

@+,   Ju£i?n
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 sept. 2006 à 15:12
Attention Julien, ici on est en QuickBasic, donc sous msdos.

Ne pas trop se fier au msdn, même si dans le cas présent c'est valable.

CHR est une très vielle fonction, qui viens des toutes premières versions du basic (basica, hpbasic et qbasic entre autres).

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3

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
1 sept. 2006 à 15:46
La même commande (Chr ou Chr$) existe en VB6, c'est d'ailleurs l'aide de vb6 sur cette commande que t'a donné Julien.
(Chr$ est un peu plus rapide car elle renvoie directement une chaine de caractère)

En VB.Net par contre, il ne reste plus que Chr, mais le fonctionnement est le même.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
totalhackerz Messages postés 33 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 30 octobre 2007
1 sept. 2006 à 15:38
merci pour linfo sé bon a savoir! et pour la rapidité!
oui sa doit etre une vielle commande vue ke sé un truc tré basic !
et je voudrai vous pauser une autre question , si je voudrai faire un petit logiciel VB, je peut reprendre la meme commande ?'CHR'
ou il exsite une autre commande pour le VB?
 
0
totalhackerz Messages postés 33 Date d'inscription dimanche 23 mai 2004 Statut Membre Dernière intervention 30 octobre 2007
1 sept. 2006 à 15:52
Ok je te remerci bcp pour ton aide!
0
lcv1212 Messages postés 18 Date d'inscription mercredi 6 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
11 oct. 2006 à 00:06
Bonjour,

Je suis debutant en vb6 et j'aimerais bien savoir si il existe un site ou un bouquin qui pourais m'aider. J'ai de vieux programes en Qbasic et j'aimerais bien les traduire en VB6.

Presentement j'ai quelques notions mais c'est pas assez.

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
11 oct. 2006 à 09:11
> lcv1212 : peu etre as tu déja trouvé mais dans le doute: www.vbfrance.com

@+,   Ju£i?n
0
lcv1212 Messages postés 18 Date d'inscription mercredi 6 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
11 oct. 2006 à 19:00
Merci Julien
Hi!

Je trouve le site tres complet il me reste seulement a decortiquer tous ca. les tuto sont bien fais.

Mais j'ai une autre question en vb6  c'est quoi les codes qui remplacent c'est derniers.           c'est lignes son en Qbasic
for a = 0 to 255: b=255-av a : d 1
gosub conto        <===  ce codev b:d2
gosub conto
d=3: gosub conti
v1= v
d=4:gosub conti
v2=v
va=(int(v1/8))+((int(v2/8))*16)
if  va <> a then print"in=";va;"out=";a: t=t+1

d=5:gosub conti
v1=v
d=6:gosub conti
v2=v
va=(int(v1/8))+((int(v2/8))*16)
if va <> b then print " B_In =";va; "bout =";b:t = t +1
for c = 1 to 1000: next c
next A
goto bit16  <====     Celui ci

conti:
out &H37a,(d+8)
for c = t to  0 step -1 : next c
out &h37a,(d)
for c = t to 0 step -1: next c
v= inp(&h379)
for c = t to 0 step-1: next c
out &h37a,(d+8)
for c = t to o step -1:next c
return  <====     celui ci c'est qu'elle code qui le remplace en vb6??
 

merci de vos conseils

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29;  ]
0
lcv1212 Messages postés 18 Date d'inscription mercredi 6 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
11 oct. 2006 à 19:06
je n'est pas colle le reste
du programe

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 oct. 2006 à 09:40
Salut,
Si tu ne l'a pas déjà fait je te conseille de reposer une question dans le forum. car ceci n'a plus rtien a voir avec l'autre question.

Quel VB utilses tu  car avec VB6 Le code que tu m'a donné fonctionne (=> Encore faut il que il y est une étiquette conto et une étiquette bit16 tout comme il y a déjà l'étiquette conti

@+,   Ju£i?n
0
lcv1212 Messages postés 18 Date d'inscription mercredi 6 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
12 oct. 2006 à 15:01
Merci pour ton aide julien,

Lorsque j'execute ce programme pendant la compilation il aparais un message d'erreur "Run time error 28"  OUT OF STACK PLACE

Je ne comprend pas le terme etiquette pouverz vous me donne un exemple concret.

La version est Visual Basic 6.0

merci pour tes conseils

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
12 oct. 2006 à 15:24
Les étiquettes sont des points de branchements dans le code, permettant de sauter une partie du code

L'étiquette est représentée par "NomEtiquette:" en tout début de ligne.

Le saut peut etre de 2 types : définitif (instruction Goto) ou avec retour (instruction Gosub).
Un saut avec retour est utilisé pour executer une subroutine (d'ou GO SUBruntime).
Ce mécanisme (même si encore existant) est abandonné avec VB, il est remplacer par le système de procédures et de fonctions.

QBasic et Visual Basic sont 2 philosophies de programmation totalement différentes. En QBasic les procédures et fonctions n'existaient pas, le codage était séquentiel, il s'exécutait ligne par ligne de la première jusqu'a la dernière. Les instructions  Goto et Gosub étaient là pour justement casser la séquence.

Je ne saurais trop te conseiller de repenser complètement ton programme QBasic et de le recoder complètement en VB.
Dans un bon programme VB, il ne doit pas apparaitre une instruction Gosub (à remplacer par un appel à une procédure). Les instructions Goto devraient etre strictement réservées au gestionnaire d'erreur (On Error Goto).

Pour ton erreur c'est tout simplement que tu as imbriqué trop d'appels Gosub. Certainement une boucle qui se mord la queue
A chaque appel, le système stocke en mémoire (dans la pile exactement, STACK en anglais) un certain nombre d'infos pour pouvoir revenir au point de départ.
Quand il y a trop d'appel, il n'y a plus assez de mémoire, la pile est pleine, donc erreur.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
lcv1212 Messages postés 18 Date d'inscription mercredi 6 septembre 2006 Statut Membre Dernière intervention 16 octobre 2006
12 oct. 2006 à 16:03
Donc si je comprend bien, mon code devrais resembler a ca

Sub lop
go sub conti

mon code

end sub

Sub conti
mon code
go sub lop
end sub

Je pense que je vais repenser toutes mon programme en vb comme tu dit.

Merci de ton aide, c'est tres aprecier

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
0
Rejoignez-nous