Plantage programme (pb de variable ?)

Résolu
cs_Metaldark Messages postés 31 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 26 juillet 2007 - 22 juin 2005 à 13:58
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 22 juin 2005 à 17:31
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

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
22 juin 2005 à 14:05
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
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
22 juin 2005 à 14:09
canal as integer, plutot ?

BasicInstinct
0
cs_Metaldark Messages postés 31 Date d'inscription vendredi 22 août 2003 Statut Membre Dernière intervention 26 juillet 2007
22 juin 2005 à 14:26
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
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
22 juin 2005 à 15:55
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
0

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

Posez votre question
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
22 juin 2005 à 16:05
ca veut dire que carac est une chaine de longueur 1 caractere

moi j'ai toujour fait
NFile as integer

NFile=freefile
....

BasicInstinct
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
22 juin 2005 à 16:11
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à ???
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
22 juin 2005 à 16:24
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
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
22 juin 2005 à 16:37
Pourquoi ??? Si y'en a bien que 256 c'est que c'est géré en Byte non, je dis une connerie ???
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
22 juin 2005 à 16:54
le freefile est bien en Integer

et ça ça marche:



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

Close #300


Daniel
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
22 juin 2005 à 17:31
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é...
0
Rejoignez-nous