Fichier typé (RECORD)

Signaler
Messages postés
27
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
5 février 2007
-
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
UN fichier à été créer sur disque avec borland pascal 7.0 avec des enregistrement de ce type :

Type Tata = Record
Chemin : integer;
Nop : integer;
Date_Deb : String[10];
Date_Fin : String[10]
End;

Le fichier est correct et est lu sans problème avec une application en borland pascal toujours. Cette application à dix ans et possède 80000 lignes de codes qui ne posent aucun problêmes !!

/***********************************************/

Aujourd' hui j'ai ecris une petit application en DELPHI avec le
meme record que ci dessus. j'arrive à lire le fichier sans problême jusqu'a Date_Deb. Après les champs contiennent n'importe quoi. Après la lecture du deuxieme STRING[10], on dirait que l'on perd les pédales dans le fichier.

quelqu'un pourrait - il m'aider ?

JMN :question)

7 réponses

Messages postés
84
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
21 mai 2004

Borland Pascal 7 ou Delphi, il me semble que les fichiers typés sont gérés de la même façon.
BP7, Delphi1, Delphi2, Delphi 4 et Delphi 5 en tout cas gère les fichiers typés de la même façon.
Ton erreur doit provenir du traitement que tu utilises pour gérer les records.

Envoie un bout de ton code...

RMD

www.Logiciels-RMD.com
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Depuis Delphi 5, les structures de type enregistrement sont du type packed record par défaut. Celà peut introduire un décalage dans la longueur des données.
La solution consiste à un introduire un caractère de "remplissage" pour recaler le tout.
Ce problème s'est posé en passant de Delphi 4 à Delphi 5.

De plus, si les enregistrements ont été créés sur un système 16 bits, la longueur des integer est de 2 octets contre 4 sur les sytèmes 32 bits. Si tel est le cas, dans Delphi, je déclarerais des smallint (16 bits signé) au lieu des integer (32 bits signé). Il y a dix ans, les systèmes 32 bits étaient moins courants. ;)

May Delphi be with you
Messages postés
84
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
21 mai 2004

Tiens, pourtant j'ai migré des programmes de BP7 à Delphi 5 sans problème (?!)
Mais tu as forcément raison pour les integer (les records migrés ne contenaient que des string !).
De toute façon, je n'irai pas te contredire Delphiprog ;o)

RMD

www.Logiciels-RMD.com
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Nul ne détient la vérité et l'erreur est humaine. J'ai le droit à l'erreur, moi aussi :big)

RMD : si tu as migré des record ne contenant que des string, alors c'est sur, tu ne pouvais pas rencontrer de problèmes.

selma-elec : ce serait bien que tu nous tiennes au courant...
May Delphi be with you
Messages postés
27
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
5 février 2007

Merci à tous pour vos réponse.

Mais la solution est là :

- il est vrai que pour migrer un record de BP7 vers DELPHI
les integer de BP7 doivent etre smallint dans DELPHI
( je ne l'avais pas précisé dans la question car cela coulait de source)

- Mais le plus gros problême est que les dernieres version de delphi ne gère pas les record de la même manière que BP7, il ne gère pas les alignement sur les donnés du record par defaut. il faut pour cela utilisé les directives de compilations d'alignement ( $A1 A2 A4 A8 } en utilisant la directive {$A1} tous rentre dans l'ordre il est alors possible de lire et ecrire des record avec toute la compatibilitée de BP7.

JMN
Messages postés
84
Date d'inscription
mercredi 25 septembre 2002
Statut
Membre
Dernière intervention
21 mai 2004

Merci pour l'info... Et pour avoir brillament répondu à ta propre question !!

En tout cas je suis prévenu au cas où je quitterai Delphi 5.

RMD

www.Logiciels-RMD.com
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
Merci beaucoup pour cette info et pour...avoir répondu à ta question. 8-)
Je pensais à celà en parlant des enregistrements Packed par défaut depuis Delphi 5.
May Delphi be with you