CHR$? c'est quoi?

Résolu
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007
-
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007

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?
 
Messages postés
33
Date d'inscription
dimanche 23 mai 2004
Statut
Membre
Dernière intervention
30 octobre 2007

Ok je te remerci bcp pour ton aide!
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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; ]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
> lcv1212 : peu etre as tu déja trouvé mais dans le doute: www.vbfrance.com

@+,   Ju£i?n
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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;  ]
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

je n'est pas colle le reste
du programe

lcv1212
[Insert_Emoticon%28%27/imgs2/smile_dissapprove.gif%27%29; ]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
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
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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; ]
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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 #
Messages postés
18
Date d'inscription
mercredi 6 septembre 2006
Statut
Membre
Dernière intervention
16 octobre 2006

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; ]