Pb pour Charger un fichier > 32ko dans un String [VB] - VB/VBA/VBS - Programmation
Marsh Posté le 25-09-2003 à 11:32:23
Je suis pas un expert en VB, ni un gand fan, mais est-ce normal de mettre un fichier dans un String ?
Marsh Posté le 25-09-2003 à 11:45:37
C'est un fichier RTF, donc du texte. Et comme je fais des chercher/remplacer de morceaux de texte, en String c'est géré nativement. Mais je suis pas sectaire, si quelqu'un me propose une structure qui peut convenir ici, je prends !
JagStang a écrit : Je suis pas un expert en VB, ni un gand fan, mais est-ce normal de mettre un fichier dans un String ? |
Marsh Posté le 25-09-2003 à 13:17:04
bien sûr que c'est normal de mettre un fichier dans un string, surtout quand tu veux faire des search & replace dedans, je ne vois pas comment tu pourrais faire autrement
sinon pour d'autres traitements, tu pourrais le charger dans un array de bytes.
Bon en fait le problème il est tout simple: tu dois charger ton fichier d'un seul coup et non byte par byte. Idem pour la sauvegarde. Comme je trouve VB super mal foutu au niveau I/O de base, je te file un bout de code direct:
Code :
|
Marsh Posté le 25-09-2003 à 14:25:09
drasche a écrit : bien sûr que c'est normal de mettre un fichier dans un string, surtout quand tu veux faire des search & replace dedans, je ne vois pas comment tu pourrais faire autrement |
Merci pour tout, ca marche nickel, plus d'erreur et c'est même vachement plus rapide !!
Marsh Posté le 25-09-2003 à 14:45:16
Si tu dois faire des traitements sur de gros fichiers, il faut bufferiser et gérer les passages d'un buffer à l'autre...
après pour rechercher ds un fichier ya des algos comme le BMH donne de pas trop mauvais résultat
en cherchant un peu sur google on doit pouvoir trouver du code VB tout fait pour cela
Marsh Posté le 25-09-2003 à 10:47:52
Salut,
J'ai pas touché à VB depuis au moins 6 ans (VB3)... et mon chef veut un programme en VB
j'ai un souci, je dois charger un gros fichier dans un String pour ensuite faire quelques chercher/remplacer dedans, puis réécrire le string dans un autre fichier.
Voici ce que j'ai :
Private Function loadRTF(fichier As String) As String
' chargement du modèle RTF
Open fichier For Input As #1
loadRTF = ""
While Not EOF(1)
ligne = Input(1, #1)
loadRTF = loadRTF & ligne
Wend
Close #1
End Function
Private Sub writeRTF(fichier As String, contenu As String)
' écriture du fichier final
Open fichier For Output As #2
Print #2, contenu
Close #2
End Sub
Le souci c'est que dès que le fichier original dépasse une certaine taille (approx. 32ko après tests) le programme plante, style boucle infinie.
Je soupçonne 2 choses:
- soit le string est plein, l'aide dit qu'on peut faire des chaines dynamiques de 2Go, comment ça se déclare ?
- soit le tampon de lecture est plein, comment on relit un nouveau tampon depuis le fichier dans ce cas ??
Merci de l'aide que vous m'apporterez
Bill
---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)