Exploiter un fichier texte situé dans les ressources du programmes

Résolu
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 - 1 mai 2010 à 20:15
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 - 5 mai 2010 à 12:09
Bonjour, je crée en ce moment un système de favoris pour mon navigateur Internet.

Le problème c'est qu'actuellement le fichier nommé "Favoris.ini" qui est exploité pour stocker les favoris, utilise

FileOpen(1, "C:\Favoris.ini", OpenMode.Input)

Cela fait que le fichier "Favoris.ini" n'est pas exploité comme ressource et il doit se trouver dans C:\ ce qui n'est pas pratique du tout.

J'ai longtemps cherché une solution, mais c'est plus compliqué que ce que l'on pense une fois que l'on regarde mon code :

i = 1 'Lecture du fichier de données
Try
FileOpen(1, "C:\Favoris.ini", OpenMode.Input)
While Not EOF(1)
data(1, i) = LineInput(1)
data(2, i) = LineInput(1)
data(3, i) = LineInput(1)
data(4, i) = LineInput(1)
i = i + 1
End While
Catch
Finally
NbData = i - 1
FileClose(1)
End Try

'Comptage du nombre de listes déroulantes
s = ""
NbListes = 0
j = -1
For i = 1 To NbData
j = j + 1
If data(1, i) <> s Then
If NbListes <> 0 Then
NDparListe(NbListes) = j
j = 0
End If
s = data(1, i)
NbListes = NbListes + 1
NomListes(NbListes) = s
End If
Next
NDparListe(NbListes) = j + 1

'Initialisation de la box des favoris
If NbListes >= 1 Then
l1.Clear()
For i = 1 To NDparListe(1)
l1.Add(data(2, i))
Next i
ComboBox1.DataSource = l1
ComboBox1.Enabled = True
End If
End Sub

Private Sub Form1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated
MAJListes() ' La liste des Favoris
End Sub

Public Function DonneURL(ByVal s As String) As String
Dim ds As String
Dim res As String = ""
FileOpen(1, "C:\Favoris.ini", OpenMode.Input)
While Not EOF(1)
ds = LineInput(1)
If ds s Then res LineInput(1)
End While
FileClose(1)
Return res
End Function

25 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
3 mai 2010 à 16:47
Je vous avez donné cela précédement il faut en tenir compte en fonction des opérations que vous voulez faire:

FileOpen(1, fichier, OpenMode.Input)'lecture du fichier

FileOpen(1, fichier, OpenMode.Append)'fichier ouvert pour être ajouté

FileOpen(1, fichier, OpenMode.Output) 'fichier ouvert pour accès à l'écriture

Je pense que pour la sauvegarde il faut mettre:

FileOpen(1, fichier, OpenMode.Append)'fichier ouvert pour être ajouté

C'est ce que j'ai mis dans mon programme et cela fonctionne


Avez-vous comme pour les exe sélectionné dans les propriété du fichier ini: copier toujours copier. C'est important pour que votre fichier soit à la bonne place.
0
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
3 mai 2010 à 17:28
J'ai appliqué votre correctif et je m'apperçois que les favoris sont en effet modifiés mais à chaque modification effectuée le favoris se transforme comme le premier favoris de la liste.

Exemple :
Je modifie/ajoute/supprime

Favoris
LaPoste
http://laposte.fr

Il se transforme comme le 1er favori de la liste

Favoris
Google
http://google.com
0
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
3 mai 2010 à 17:40
Je pense qu'il faut mettre :

FileOpen(1, Favoris, OpenMode.Input)

Et dans la sauvegarde :

FileOpen(1, Favoris, OpenMode.Output)

Mais alors un autre bug arrive :
Tous les favoris sont supprimés sauf le premier, il est impossible d'en ajouter, modifier, supprimer.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
3 mai 2010 à 17:50
Le problème se situe dans la boucle, essayez cela:

Public Sub Sauvegarde()
'Sauvegarde dans le fichier Favoris.ini
Dim boucle As Boolean
boucle = True
Try
FileOpen(1, Favoris, OpenMode.Append)
For i = 0 To DataGridView1.Rows.Count - 1
Dim row As DataGridViewRow = DataGridView1.Rows(i)
If row.Cells(0).Value + row.Cells(1).Value + row.Cells(2).Value + row.Cells(3).Value <> "" Then


PrintLine(1, row.Cells(0).Value)
PrintLine(1, row.Cells(1).Value)
PrintLine(1, row.Cells(2).Value)
PrintLine(1, row.Cells(3).Value)
End If
Next
Catch
Finally
FileClose(1)
End Try
End Sub

Je ne peux pas trop vous aider pour ce code car j'ai utilisé une autre façon de procéder ligne par ligne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
3 mai 2010 à 18:12
J'ai dû remplacer "Favoris" par "Fichier" (je conserve le Dim précédent) car sinon il y a marqué une erreur.

Une fois votre code appliqué, lors de la modification d'un favoris, les favoris déjà crées sont copiés une seconde fois : encore un nouveau bug.

Si vous voulez je peux vous envoyer par mail le form des favoris.
0
Rejoignez-nous