Exploiter un fichier texte situé dans les ressources du programmes [Résolu]

Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
- - Dernière réponse : 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
Afficher la suite 

5/25 réponses

Messages postés
6364
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 novembre 2019
88
0
Merci
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.
Commenter la réponse de cs_Le Pivert
Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
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
Commenter la réponse de cs_aus3004
Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
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.
Commenter la réponse de cs_aus3004
Messages postés
6364
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 novembre 2019
88
0
Merci
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.
Commenter la réponse de cs_Le Pivert
Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
1
0
Merci
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.
Commenter la réponse de cs_aus3004