elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 2005
-
1 juin 2005 à 11:11
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 2005
-
1 juin 2005 à 17:35
Bonjour à tous,
mon problème est le suivant:
j'ai créé un fichier typé comme suit:
Type
TrecData = Record
Datteheur : TDateTime;
etat : string[2];
omc : byte;
country : byte;
common : word;
system : word;
net : word;
alarme : byte;
rssi : byte;
reserve : byte;
end;
var
Form1 : TForm1;
recFich : file of TrecData;<---mon fichier binaire typé
data : TrecData;
j'ai converti une chaine de caractere en integer avec strtoint et jai ensuite converti le int en hexa é ensuite g reconverti en int ,en gro g fai sa:
var
int : integer;
str : string;
begin
int := strtoint(str);
data.system := strtoint ( inttohex (int,4) );
le probleme est que comme le data.systeme est en word ,comme g converti de l'hexa en integer et si j'essai d'afficher la valeur du data.system il ne peu pa lire les lettre du code hexa ce qu'il me semble
Je voudrais savoir lorsqu'on essai d'ecrir dans un fichier avec ce que ce que j'ai tapé sa passe?
Si non comment yorai til un moyen ppour que j'ecri dans un fichier du code hexa avec le fichier typé sue j'ai creer(plu precisement les variable ki sont declaré en byte et word).
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 1 juin 2005 à 13:53
Salut,
La ligne data.system := strtoint ( inttohex (int,4) ); va
te poser un problème si la représentation hexa de ton entier contient
les caractètes A,B,C,D,E, ou F . Et au mieux, une drôle de conversion :
Si str contient '100' alors int prend la valeur 100 en décimal soit 64 en héxa (noté $64 ou 64H ou 0x64)
inttohex (int,4) te renvoie donc '0064', et data. System prend au final la valeur 64 (décimal) soit $40 (hexadécimal)
La forme correcte est :
data.system := strtoint ('$'+ inttohex (int,4) );
Le truc, c'est que ça ne sert à rien ! Tu peux faire directement :data.system : = strtoint(str);
Data.Sytem est un word tu peux lui donner toutes les valeurs numériques entre 0 et 65535
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 20051 1 juin 2005 à 14:21
ok mais si je tape data.system := strtoint(str) est ce que celà pourrait écrir dans mon fichier binaire les données ke je v recuperer dans str ki sont en hexa?
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201412 1 juin 2005 à 14:33
attention!!
strtoint ne convertit pas de l'hexa en binaire mais du texte( chiffres
0..9 a l'exclusion des lettres) en binaire pour convertir de l'hexa en
binaire il faut utiliser la Hextobin
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 20051 1 juin 2005 à 14:56
euh oui je c mai je croi ke je me sui mal exprimer en fait c un fichier kelconk .txt ou .dat ou .bin...ou je veu ecrir d donnée en hexa.mais kom j'ai : data.system en word et ke g str en hexa alor je c pa sil va ecrir les lettres de ce code ds le fichier ou l'exclur ou meme mafficher une erreur kom koi les lettre du code hexa ne sont pas des entiers un truc du genre...donc si quelqu'un connai comment je peu ecrir de l'hexa dans mon fichier typé alor kil ya un byte pourait il maider?