Longeur d'enregistrement incorrecte [Résolu]

Messages postés
4
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
2 juin 2011
- - Dernière réponse : airemax
Messages postés
4
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
2 juin 2011
- 11 mai 2011 à 23:11
Bonjour tous le monde
je développe une application dans la quelle j'utilise un fichier .txt comme une base de donné (je sais que c'est très con ) et pour cela j'ai créer plusieurs structures
comme suit
' pour la premier structure 

Public Structure structure1
        <VBFixedString(150)> dim cc As String
        <VBFixedString(150)> dim vv As String
        <VBFixedString(150)> dim pp As String
 End structure1

'pour la deuxième 
 Public Structure structure2
        <VBFixedString(150)> dim mm As String
        <VBFixedString(150)> dim dd As String
       <VBFixedArray(5)>  dim tt as structure1() 'ici je déclare un tableau de           'type Structure 
 End structure2

et quant je veut écrire dans le fichier je fait
dim var as structure2
'je remplie ce var
 Dim rec As Double = Len(var)
 Dim numf As Integer = FreeFile()
 FileOpen(numf, "j:\fichier.txt", OpenMode.Input, OpenAccess.Write, OpenShare.LockWrite, rec)
        Dim nb As Integer = FileLen("j:\fichier.txt") / rec
        FilePut(numf, var, nb + 1)
        MsgBox("ok")
        FileClose(numf)
        numf = Nothing

a premier vue c'est très logique mais quant j’exécute j'ai l’exception suivante
"Longeur d'enregistrement incorrecte"
et merci d'avance
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
Salut

C'est marrant, le sujet similaire est apparu dans le forum il y a quelques jours/semaines.

Ta syntaxe de déclaration de structure n'est pas correcte.
End Structure et pas End Structure1

D'après l'aide, PutFile est plus ou moins obsolète et suggère une autre technique (My).

OpenMode.Input, OpenAccess.Write
utilisés ensemble me parait bizarre

Si tu dois ajouter un enregistrement à la fin, je pense qu'il n'est pas possible de lui dire que c'est l'enregistrement X puisqu'il n'existe pas encore.
Je pense qu'il suffit de relire la dernière donnée pour positionner le pointeur, puis de faire un FilePut sans préciser de numéro d'enregistrement.

Dans ce genre de manœuvre sur fichier, je pense qu'il serait utile de gérer les erreur (Try)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
4
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
2 juin 2011
3
Merci
merci jack pour les remarques
je me suis bien débrouillé et mon programme fonction pas trop mal (en tous cas pour les premier essais je n'ai trouver aucun problèmes)
le truc que j'ai fait
dim var as new structure2
'je remplie ce var
 Dim rec As Double = Len(var)
redim preserve var.tt(4) 

dim rec1 as double = Len(var.tt(4))'à la place de 4 tu peut mettre 0/1/2/3 
rec=rec+rec1
 Dim numf As Integer = FreeFile()
 FileOpen(numf, "j:\fichier.txt", OpenMode.Random, , , rec)
Dim nb As Integer = FileLen("j:\fichier.txt") / rec
        FilePut(numf, var, nb + 1)
        MsgBox("ok")
        FileClose(numf)
        numf = Nothing

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de airemax