Bonjour,
Dans une procédure qui lit les octets d'un fichier j'extrait 8 octets successifs
représentant un réel double, dont je veux obtenir la valeur numérique avec le code suivant :
Le valeur brute du champ obtenu est correcte, mais le valeur numérique ChChamp est fausse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 type TypArray64 = array[0..63] of byte; // rectifié TabToN8 = record case integer of 1 : (Val : double; Suit : array[1..56] of byte); 2 : (Tab : TypArray64); end; ... var BUFF : array[1..128] of byte; ... Lig : string; ChChamp : string; // chaîne du champ pour affichage ValCh : Double; // valeur d'un champ numérique Champ : TypArray64; Lchamp : TabToN8; K, L :byte; Lg, Debut, Fin : integer; // longueur du champ ... begin ... L := 0; // corrigé Lg := TbLgChamp[J]; // longueur du champ Fin := Debut + Lg -1; // fin du champ for K := Debut to Fin do // lecture du contenu d'un champ begin Champ[L] := Buff[K]; inc(L) end; Champ[TbLgChamp[J]] := byte(#0); // fermeture du champ Corrigé ... // traitement d'un champ numérique sans conversion, stocké comme un double ... LChamp.Tab := Champ; // affectation de champ lu au TypArray64 ValCh := double(LChamp.Val); // valeur numérique ChChamp := FloatToStr(ValCh); // résultat PAS correct ???? Lig := Lig + ChChamp + ' '; ... end;
Y à t'il une solution à ce problème de conversion ?
Merci pour vos réponses.
PL
Partager