elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 2005
-
6 juin 2005 à 16:34
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 2005
-
8 juin 2005 à 08:58
Bonjour à tous j'ai besoin d'aide pour lire dans un fichier binaire est ce que quelqu'un pourait m'aider? merci beaucoup.
Niki2001
Messages postés85Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention17 décembre 20051 7 juin 2005 à 17:58
Euh... au passage, pour convertir byte et word en texte, on utilise InToStr et pour TDateTime on tuilise DateTimeToStr. Je suppose que tu le savais mais bon, on ne sait jamais...
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 20051 7 juin 2005 à 14:57
en fait mon fichier binaire est un fichier typé avec des variables de type different c'est à dire que j'ai par exemple :
trecdata = record
inti : byte;
inti2 : byte;
str : string;
rom : word;
datheur : tdatetime;
donc si j'enregistre nimporte quel donné dans le fichier que je crée (par exemple dans un fichier texte) j'ai donc des caractères spéciaux non chifrable par exemple les date horaires sont remplacer par des !^$++ etc...et celà je veu le convertir en texte dans un fichier .txt.
si j'ai mi des byte , word, tdatetime au lieu de string c'est pour que le fichier qui sera creer ne soi pa enorme car j'ai fai un programme permettan denregistrer des donnée dans un fichier txt , bin,dat...via le port rs232 .ces données je les avais enregistré dans un fichier txt mais comme celuici était enorme et ainsi tro long a trier par un autre programme que j'ai fait,j'ai alor changer les string du record par d'autre variable afin d'avoir moins d'octet pour les fichier créer donc le probleme c'est: est ce possible lorsque je veu trier les données du fichier binaire de convertir celui ci en texte.J'ai déjà essayer la méthode que tu me propose jlen100 mais il recopie les caractères spéciaux du fichier binaire dans le fichier texte et moi je voudrai l'ecriture normal.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 7 juin 2005 à 15:08
je regarde ce que l'on peu faire mais une 1ere chose dans un fichier
typé il faut toujours declarer une longueur fixe au string ex
str:string[80]; sinon ton enregistrement est de longueur inderterminée
(je ne sais plus quelle valeur DELPHI donne par defaut a string)
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 7 juin 2005 à 15:36
je pense que ton probleme vient de ton string.
En effet DELPHI converti par defaut les string en
AnsiString c'est a dire des chaines a longueur
variable. donc a l'enregistrement les records ont des longueurs
variables et quand tu essaies de les relires DELPHI ne peut pas
connaitre la longueurs des enregistrements ce qui fait que tu as des
recouvrements des variables binaires et textes.
il est imperatif que tu fixe une longueur a ton string pour que tous les enregistrements ai la meme longueur.
un fichier sur disque peu se representer comme un tableau de caracteres
a une dimension ; quand tu declares un fichier typé ; pour lire le
Nieme enregistrement DELPHI se deplace de N*longueur de
l'enregistrement Ainsi si la longueur a changer entre temps DELPHI
adresse ....n'importe quoi !!!
elementalord
Messages postés26Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention10 juin 20051 8 juin 2005 à 08:58
en fait c'est bon il fallait que je crée 2 fichier typés l'un qui est en byte word ... l'autre en string et puis de faire une conversion byte,word...---> string comme tu as dit niki2001 que je le savais déjà mais que je t'en remercie tout de même pour preuve de ton aide,et ainsi je peux voir correctement des données dans un fichier texte car en fait dans le fichier binaire il est codé en ascii ,et je remerci à toi jlen100 de m'avoir aider également.