fox37
Messages postés23Date d'inscriptiondimanche 24 août 2003StatutMembreDernière intervention11 février 2007
-
4 mars 2006 à 18:23
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 2014
-
10 mars 2006 à 21:34
Bonjour a tous,
Comment faire pour convertir un caractère en code ascii?
Je m'explique : Je recois 3 caractères codés sur 1 octet chacuns par le port serie.
Je peux visualiser ces caractères dans un tedit.
Mais je voudrais en fait visualiser le code binaire de ce caractère afin de pouvoir obtenir sa valeur réelle.
par ex : je recois les caractères 1,2,3 qui correspondent normalement a 00110001,00110010,00110011
à partir de ce momment je voudrais pouvoir obtenir la conversion en décimal mais sur 3 octets : 001100010011001000110011 ==>2e0+2e1+2e4+2e5+2e9+2e12+2e13+2e16+2e20+2e21= à mon resultat qui s'affichera à l'ecran
Voila j'espère avoir été à peu près clair
Merci
Fabrice
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 8 mars 2006 à 13:50
quelle valeur a ton caractere nul? en effet s'il a été reçu par le port
serie il a obligatoirement une valeur.sinon il t'en manquera 1.
donc dans la boucle for to il suffit de tester la valeur de chaque
caractère et de remplacer celui "nul" par le caractère
espaceabel2.caption:= '';// on efface le label
var valeur: array[0..3]of byte;
for i: =1 to 3 do
begin
if length( edit1.text)then
begin
label2.caption:= label2.caption+'0';
valeur[i]=ord('0') ;//mets le caractere par défaut que tu veux
end else
begin
if edit1.text[i] =caracterenul then
label2.caption: = label2.caption+' ' //on remplace le caractère "nul" par l'espace
else
begin
label2.caption: =label2.caption+edit1.text[i];
valeur[i]=ord(edit1.text[i]);//ici on transtype le caractere dans le tableau c àd on cnvertit char en byte
fox37
Messages postés23Date d'inscriptiondimanche 24 août 2003StatutMembreDernière intervention11 février 2007 10 mars 2006 à 21:22
Tous d'abord merci a tous pour votre aide et vitre disponibilité.
Le prog a l'air de bien marché :o))
Voici le code pour mon gerer mon caractère vide :
var ensemble:string;
Var a, b, c : Byte;
var octet1, octet2, octet3 : char;
var Resultat : integer;
begin
octet1:=str[1];
octet2:=str[2];
octet3:=str[3];
if str[1]=#0 then label15.caption:='0'else
begin
label15.caption:=str[1];
end;
if str[2]=#0 then label16.caption:='0' else
begin
label16.caption:=str[2];
end;
if str[3]=#0 then label17.Caption:='0' else
begin
label17.Caption:=str[3];
end;
a:=ord(octet1);
b:=ord(octet2);
c:=ord(octet3);
Resultat := (c or (b shl 8) or (a shl 16));
Edit2.Text:= Resultat1;
end;
Est il possible en realisant une boucle de pouvoir modifier l'emplacement label.
en clair je prend une variable i
for i:=1 to 3 do
if edit1.text[i]:=#0 then label17.Caption:='0'
Label17 peut il varier avec la variable i ex: i=2 alors on ecrit dans :