Page 1 sur 1

[R] Mon script plante à cause de la mémoire

Posté : mer. 29 févr. 2012 19:19
par moi
Bonjour...
après quelque temps d'absence (honte intergalactique) je reviens vers vous, je vous dis "Bonjour..." et je vous demande un peu d'aide... j'ai un script assez petit qui entoure des mots de balises HTML (en faite c'est un peu le principe de Forum color réalisé par Vodoo mais pour du Html et surtout en plus petit...

Code : Tout sélectionner

#include <Array.au3>
#include <File.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("HTML colorateur", 676, 442, 192, 124)
Global $Tab1 = GUICtrlCreateTab(8, 8, 561, 425)
Global $TabSheet1 = GUICtrlCreateTabItem("code entrant")
Global $Edit1 = GUICtrlCreateEdit("", 16, 40, 545, 377)
Global $TabSheet2 = GUICtrlCreateTabItem("code sortant")
Global $Edit2 = GUICtrlCreateEdit("", 16, 40, 545, 377)
GUICtrlCreateTabItem("")
Global $demarrer = GUICtrlCreateButton("Démarrer", 569, 32, 95, 89)
Global $aretquit = GUICtrlCreateButton("Arreter & quitter", 568, 128, 99, 305)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $listemots
Global $couleurmots
_FileReadToArray(@ScriptDir&"/liste.txt",$listemots)
_FileReadToArray(@ScriptDir&"/couleur.txt",$couleurmots)
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
Case $aretquit
    Exit
Case $demarrer
    $read = GUICtrlRead($Edit1)
    If $read<>""Then
    For $i = 1 to UBound($listemots) step 1
    $read = StringReplace($read, $listemots[$i], '<span class="' & $couleurmots[$i] & '">'& $listemots[$i] & "</span>")
Next
MsgBox(4096,"finito mi amigo","l'opération est terminée")
GUICtrlSetData($Edit2,$read)
EndIf
 EndSwitch
WEnd
 
voila et ensuite un peut de css et c'est tout... un premier fichier .txt contient tout les mots qui peuvent être Entouré de balises (un mot = une ligne ) et un deuxième fichier .txt contient le nom des class pour le css. Les lignes des deux textes sont coordonnées (ligne 1 = ligne 1, ligne 2 = ligne 2, etc...)

bref à la fin j'ai une erreur "error allocating memory"

et je ne sais pas ce que c'est enfin si j'ai compris "erreur d'allocation de mémoire"(désolé si la traduction qui sort de ma tête n'est pas bonne)

comment faire pour que cela marche?

merci d'avance

Re: [..] Mon script semble correcte pourtant il y a une erre

Posté : mer. 29 févr. 2012 19:40
par TommyDDR
Je n'ai pas le temps de me pencher sur le sujet mais je vous conseille cependant de mettre un titre plus explicite que "j'ai un problème mais je ne sais pas d'où ça vient" avant que tlem ne rapplique ;)

Re: [..] j'ai un problème mais je ne sais pas d'où ça vient

Posté : mer. 29 févr. 2012 20:21
par mikell
Que donnerait une condition restrictive du genre

Code : Tout sélectionner

Case $demarrer
    $read = GUICtrlRead($Edit1)
    If $read<>""Then
    For $i = 1 to UBound($listemots) 
    If StringInStr($read, $listemots[$i]) Then   ;<<<<<<<<<
        $read = StringReplace($read, $listemots[$i], '<span class="' & $couleurmots[$i] & '">'& $listemots[$i] & "</span>")
    EndIf
Next
MsgBox(4096,"finito mi amigo","l'opération est terminée")
GUICtrlSetData($Edit2,$read)
EndIf

Re: [..] j'ai un problème mais je ne sais pas d'où ça vient

Posté : mer. 29 févr. 2012 23:51
par Tlem
@TommyDDR
C'est clair que le titre ne vaut pas un pet de lapin !!!
J'espère qu'il sera modifié d'ici demain soir ... :mrgreen:

Re: [..] j'ai un problème mais je ne sais pas d'où ça vient

Posté : jeu. 01 mars 2012 13:30
par moi
@Tlem : Le titre à été modifié.

@mikell : Toujours la même erreur

Re: [..] Mon script semble correcte pourtant il y a une erre

Posté : jeu. 01 mars 2012 14:00
par TommyDDR
TommyDDR a écrit :je vous conseille cependant de mettre un titre plus explicite que "j'ai un problème mais je ne sais pas d'où ça vient" avant que tlem ne rapplique ;)

Re: [..] Mon script plante à cause de la mémoire

Posté : ven. 02 mars 2012 00:14
par Tlem
A première vue, je ne vois pas de problème majeur. Juste deux ou trois petites bricole sans gravité.

Il faudrait vois si cela ne vient pas de vos fichiers qui seraient trop lourd.^^

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 10:05
par moi
chaque fichier txt fait moins de 1.7 Ko...

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 11:14
par TT22
Salut, déjà il y a un problème ici :

Code : Tout sélectionner

    For $i = 1 to UBound($listemots)[b][color=#FF0000]-1[/color][/b] step 1[color=#00BF00][b];Ne pas oublier le -1 ![/b][/color]
        $read = StringReplace($read, $listemots[$i], '<span class="' & $couleurmots[$i] & '">'& $listemots[$i] & "</span>")
    Next
Et peut-être que la variable $read prend trop de place après le remplacement et que ça fait buger :wink:

Peux-tu nous donner les fichiers que tu utilises pour qu'on ai les même conditions que toi ?

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 11:30
par moi
pas de problèmes mais les fichiers sont longs plus de 200 lignes chacun.

en faite je pense que se sont les array qui sont trop lourds

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 11:51
par TT22
J'ai trouvé d'où vient ton problème :mrgreen:
Dans ton fichier "liste.txt" tu as par exemple

Code : Tout sélectionner

span
Ce qui veut dire que touts les span vont êtres remplacés par :

Code : Tout sélectionner

<span class=vertf>span</span>
Tu vois le problème ?
Ensuite, tous ces span vont être à nouveau remplacés ce qu nos donne :

Code : Tout sélectionner

<<span class=vertf>span</span> class=vertf><span class=vertf>span</span></<span class=vertf>span</span>>
Etc...


En plus, tu a mis dans "liste.txt": Donc tous les / sont remplacés par :

Code : Tout sélectionner

<span class=vertf>/</span>
Donc la chaine obtenu plus haut devient ceci :

Code : Tout sélectionner

<<span class=vertf>span<<span class=vertf>/</span>span> class=vertf><span class=vertf>span</span><<span class=vertf>/</span><span class=vertf>span<<span class=vertf>/</span>span>>
Pas étonnant qu'il n'y ait pas assez de mémoire et que le script plante :roll:

Donc, dans ton fichier "liste.txt", supprime toutes les lignes qui font un seul caractère (a, b, /, etc... )
Et la ligne qui contient le span

Et ça fonctionne !

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 11:56
par moi
alors il n'y aura que une seule couleur disponible mais bon ce n'est pas grave...

maintenant que ce problème est réglé je vais me pencher sur LUIGI ( il pourra répondre en jouant un son pré-enregistré...)

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 12:22
par TT22
Pour faite parler ton LUIGI, tu peux utiliser cet UDF : http://www.autoitscript.fr/forum/viewto ... =21&t=9597

Et on n'oublie pas les bonne choses, si c'est résolu passe en [R] :mrgreen:

Re: [..] Mon script plante à cause de la mémoire

Posté : mer. 02 mai 2012 13:09
par moi
zut j'avais déja enregistrée les voix.

je passe en [R]