Fichier sequentiel

minimoix Messages postés 6 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 28 mai 2016 - 13 mai 2016 à 12:48
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 22 mai 2016 à 14:26
bonjour,
j'ai un exercice a faire mais je bloque un peu
voici l'énoncé
on souhaite crée un fichier qui contient les contacts d'un professionnel. ce fichier permet de savoir, pour une entreprise donnée, quel est le nom de la personne à contacter dans cette entreprise. les enregistrements dans le fichier sont donc constituées de :
- la raison sociale de l'entreprise (par exemple: SARL Moeve)
- le prénom et le nom de la personne à contacter( par exemple: Marc ASSIN)
- l'adresse éléctronique de la personne à contacter ( par exemple: [email]marc.assin@fai.Fr/email)
vous devez écrire, les trois méthodes suivantes:
- existe(RS): renvoie vraie si cette raison sociale existe déjà dans le fichier, faux sinon
- ajouter(RS,personne,email): ajoute ces informations dans le fichier à condition que la raison sociale n'existe pas déjà dans le fichier. ne renvoie pas de valeur
- trouve contact (RS): a partir de la raison sociale d'un entreprise, renvoie le prénom et le nom de la personne à contacter, ainso que son email ( par exemple: "Marc ASSIN [email]marc.assin@fai.fr/email)

j'ai déjà écrit ces fonctions les voici:

Module Module1
'trouver un RS existant
Function existe(ByVal RS As String) As Boolean
If Dir(contactspro) = "" Then
existe = False
Else
Dim f As Integer
Dim RSlu As String, trouve As Boolean
f = FreeFile()
FileOpen(f, contactspro, OpenMode.Input)
trouve = False
While Not EOF(f) And Not trouve
Input(f, RSlu)

If RSlu = RS Then
trouve = True
End If
End While
FileClose(f)
existe = trouve
End If
End Function

'ajoute un RS non existant
Sub ajoute(ByVal RS As String, ByVal nom As String, ByVal email As String)
If Not existe(RS) Then
Dim f = FreeFile()
FileOpen(f, contactspro, OpenMode.Append)
WriteLine(f, RS, nom, email)
FileClose(f)
End If
End Sub

'obtenir le nom et email d'une personne a partir du RS
Function renseignement(ByVal RS As String) As String
If Not existe(RS) Then
renseignement = "non trouve"
Else
Dim f As Integer
Dim RSlu
f = FreeFile()
FileOpen(f, contactspro, OpenMode.Input)
While Not EOF(f)
Input(f, RSlu)
If RSlu = RS Then
renseignement = RSlu 'LineInput(RS)
End If
End While
FileClose(f)
End If
End Function


Sub Main()

End Sub

End Module



mais je voudrais vérifier que mon code est correct, je voudrais donc de l'aide pour crée ce fichier "contactspro" mais la je sèche!
j'avais penser mettre en tête :
const contactspro = "c:/bureau/contactspro.txt"

mais des que je fais ça , ça fausse le reste du code
ca me dit:
Avertissement 1 La variable 'RSlu' est passée par référence avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution. C:\Users\simon\AppData\Local\Temporary Projects\ConsoleApplication1\Module1.vb 15 26 ConsoleApplication1

2 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
13 mai 2016 à 13:00
En VB.NET, désactives l'import automatique de Microsoft.VisualBasic (propriétés du projet/références) c'est un import qui te pourri ton code.
Ensuite, actives Option Strict et Option Explicit.

Après cela, à la place de FileOpen & co.
Utilises ce tuto :
http://webman.developpez.com/articles/aspnet/file/vbnet/

Intéresses-toi aussi aux "structure"s afin de pouvoir gérer plus facilement les données en mémoire.
0
j 'ai essayé mais j 'ai encore plus d'erreur!
je suis débutant tu sais et tout n'est pas encore très clair pour moi
en faite ce que je n'ai pas bien compris et que je chercher a savoir c'est comment faire fonctionner ce programme
qu'est ce que je dois mettre dans le sub pour que le programme se lance ?
si je crée un fichier .txt comment le récuperer par ce programme ?
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169 > minimoix
Modifié par vb95 le 15/05/2016 à 13:05
Bonjour
Pour un débutant en VB Net un excellent cours bien qu'il commence à dater : http://plasserre.developpez.com/cours/vb-net/
un bonjour à NHenry en même temps
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
15 mai 2016 à 12:59
Quelles erreurs ?
Il faut que tu mette ton code dans le Sub Main, c'est le point d'entré du programme.
Pour lire un fichier, voir le lien que j'ai mis dans mon premier message.
0
minimoix Messages postés 6 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 28 mai 2016
Modifié par minimoix le 17/05/2016 à 14:46
j'ai regardé ton lien mais en faite je n'ai pas vu cette facon de faire dans mon cours et j'aimerais mieux me servir de mon cours
voila la methode qui m'a ete apprise pour lire un fichier
dim f as integer
dim ligne as string
f=freefile()
fileopen(f, "C:\Users\simon\Desktop\contactspro.txt", openmode.input)
while not eof(f)
ligne = lineinput(f)
msgbox(ligne)
end while
fileclose()
end sub

donc j'ai teste ca fonctionne , les contacts aparaissent
maintenant ce que je voudrais faire , c'est creer le programme qui me permet d'utiliser les fonctions crées avec mon fichier
mais je ne sais pas ce qu'il faut mettre dans le sub main
je pensais faire un menu qui propose:
taper 1 pour ajouter un contact
taper 2 pour rechercher un contact
mais je sais pas comment m'y prendre

je sais pas trop si je m'exprime bien et si ce que je demande est assez clair
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
22 mai 2016 à 14:26
Si tu ne sais pas comment faire pour gérer une console, regardes la doc https://msdn.microsoft.com/en-us/library/system.console%28v=vs.110%29.aspx

pour l'accès au fichier, ce n'est pas une simple question de préférence, actuellement tu utilises des fonctions de compatibilité pour du code VB6.
0
Rejoignez-nous