Plantage programme (pb de variable ?) [Résolu]

Signaler
Messages postés
31
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
-
Salut !



J'ai un problème, mon appli plante lorsque j'execute ce morceau de code sur un fichier trop lourd...

Je n'ai pas trouvé de solutions ; j'espere que vous oui



<hr>Dim i As Long

Dim CheminFichier As String

Dim Buffer As String, carac As String * 1

Dim Canal As Byte



Buffer = ""



Canal = FreeFile

Open CheminFichier For Binary Access Read As #Canal

For i = 1 To LOF(1)

Get Canal, i, carac

Buffer = Buffer & carac

Next i

Close #Canal



Buffer = Replace(Buffer, txtSearch.Text, txtReplace.Text)



<hr>

Merci
MeTaLdArK SpiRiT

10 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
c'est quoi un fichier trop lourd ?

Autant lire tout le fichier d'un seul coup







Open CheminFichier For Binary Access Read As #Canal

Buffer = space$(Lof(1))

Get #Canal,, Buffer

Close #Canal


Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 179 internautes nous ont dit merci ce mois-ci

Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10
canal as integer, plutot ?

BasicInstinct
Messages postés
31
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
26 juillet 2007

C'est un programme qui cherche des caracteres dans un(des) fichiers(s) pour les remplacer par d'autre caracteres.

Les fichiers visés par le programme sont du type html; txt, etc (à base de texte brut)



Le problème c'est que si le fichier est trop gros (>200ko) le programme plante...





Voici le cs si vous voulez : [url]http://metaldark.free.fr/files/MultiReplace_cs.rar/url
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
23
C'est fort Gobillot!!! Je savais pas qu'on pouvait charger d'un coup d'un seul toute le fichier dans le buffer!!!



BasicInstinct, explique moi ce truc bizarre que tu raccontes !!!
Remplacer le canal qui est Byte par un Integer !!! On est pas là pour
rajouter des problèmes à ce pauvre Metaldrak !!!



Si ça plante encore avec ce que Gobillot t'a donné, donne-nous le
message d'erreur... Sinon, clique sur le bouton "Accepter" de Gobillot !



Parce que moi, là, je vois pas où ça pourrait encore déconner!!!



Mais dit moi juste un truc... que je sais pas... ça fait quoi ça :


carac As String * 1

???

Ca rempli (met 0) dans carac en le multipliant par 1 ??? C'est ça ou pas ???



Enjoy
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10
ca veut dire que carac est une chaine de longueur 1 caractere

moi j'ai toujour fait
NFile as integer

NFile=freefile
....

BasicInstinct
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
23
Etrange que ça n'ai pas planté!!!

Houlà... moi je vais aller regarder ma MSDN d'un peu plus près... Parce que ça m'ettonne tout ça!!!

Je pansais pourtant qu'il n'y avait que 256 canaux pour les fichiers
dont d'ailleurs les 128 premiers étaient légèrement différents des
autres...

Dit moi, on parles bien de VB6 là ???
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10
VB6 oui.
d'un autre coté, si effectivement tu as 255 canaux max, ca change rien de l'avoir en integer ou en byte.

BasicInstinct
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
23
Pourquoi ??? Si y'en a bien que 256 c'est que c'est géré en Byte non, je dis une connerie ???
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
le freefile est bien en Integer

et ça ça marche:



Open "C:\bidon.txt" For Output As #300

Close #300


Daniel
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
23
Oui, c'est vrai, autant pour moi... en fait, y'en a 512...

Désolé... mais bon, parfois je dis aussi des conneries!!! Ca arrive à tout le monde...



D'ailleurs, après vérification, voici ce que dit la MSDN :



"Utilisez des numéros de fichier compris entre 1 et 255 inclus pour les fichiers
non accessibles à d'autres applications, et entre 256 et 511 inclus pour les
fichiers accessibles à partir d'autres applications."



Encore désolé...