Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
561 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Pb pour Charger un fichier > 32ko dans un String

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB] Pb pour Charger un fichier > 32ko dans un String

n°523010
bill.fr
Posté le 25-09-2003 à 10:47:52  profilanswer
 

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)
mood
Publicité
Posté le 25-09-2003 à 10:47:52  profilanswer
 

n°523057
jagstang
Pa Capona ಠ_ಠ
Posté le 25-09-2003 à 11:32:23  profilanswer
 

Je suis pas un expert en VB, ni un gand fan, mais est-ce normal de mettre un fichier dans un String ?

n°523068
bill.fr
Posté le 25-09-2003 à 11:45:37  profilanswer
 

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 ?


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°523135
drasche
Posté le 25-09-2003 à 13:17:04  profilanswer
 

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 :
  1. ' Read a file into a string
  2. Public Function IosFileReadStr(ByRef strPathName As String, ByRef strData As String) As Boolean
  3.     Dim hFile      As Integer
  4. On Error GoTo ErrHandler
  5.     ' Get a free file handle
  6.     hFile = FreeFile
  7.     ' Open file
  8.     Open strPathName For Binary Access Read As hFile
  9.     ' Get file contents
  10.     strData = Space$(FileSystem.FileLen(strPathName))
  11.     Get #hFile, , strData
  12.     ' Close file
  13.     Close hFile
  14.     IosFileReadStr = True
  15.     Exit Function
  16. ErrHandler:
  17.     IosFileReadStr = False
  18. End Function
  19. ' Write a file from a string
  20. Public Function IosFileWriteStr(ByRef strPathName As String, ByRef strData As String) As Boolean
  21.     Dim hFile     As Integer
  22. On Error GoTo ErrHandler
  23.     ' Get a free file handle
  24.     hFile = FreeFile
  25.     ' Open file
  26.     Open strPathName For Binary Access Write As #hFile
  27.     ' Store file
  28.     Put #hFile, , strData$    ' yes the $ is important!
  29.     ' Close file
  30.     Close hFile
  31.     IosFileWriteStr = True
  32.     Exit Function
  33. ErrHandler:
  34.     IosFileWriteStr = False
  35. End Function

n°523190
bill.fr
Posté le 25-09-2003 à 14:25:09  profilanswer
 

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 !!


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°523221
Poipoi
Vive Grumly
Posté le 25-09-2003 à 14:45:16  profilanswer
 

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
 
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VB] Pb pour Charger un fichier > 32ko dans un String

 

Sujets relatifs
Quel est le caractère pour mettre un commentaire dans un fichier.bat ?[ASP] Inclure des routines dans le fichier global.asa
Comment charger des jars dynamiquement?[C++] Boite de dialogue et saisie de string
Ecrire et lire directement un fichier en binaire... (java)[DELPHI] récupérer le nom d'un fichier ...
[c++] sauvegarder code source IE dans un fichier...graph + fichier [résolu]
lecture ligne a ligne d'un gros fichier texteEditeur fichier PHP pour modif fichier d'un forum
Plus de sujets relatifs à : [VB] Pb pour Charger un fichier > 32ko dans un String


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR