simplifier une ligne de code ASP

simplifier une ligne de code ASP - ASP - Programmation

Marsh Posté le 04-08-2003 à 11:38:14    

on utilise l'objet Mala en ASP pour ceux qui connaissent...
 
y'a une ligne de code qui provoque systématiquement un dépassement mémoire...
 
Execute tblAssignNames(iCount) & " = """ & Replace(Replace(Replace(tblAssignValues(iCount) & "", """", """""" ), "''", "'" ), vbCrLf, """ & vbCrLf & """ ) & """"
 
 
vous auriez pas une idée pour la simplifier ? la décomposer ou un truc du style ?
 
merci d'avance :)

Reply

Marsh Posté le 04-08-2003 à 11:38:14   

Reply

Marsh Posté le 04-08-2003 à 20:26:50    

Ca, ça fait forcément une erreur : la syntaxe est fausse.
 

& "", """", """""" )

Reply

Marsh Posté le 04-08-2003 à 20:52:28    

MagicBuzz a écrit :

Ca, ça fait forcément une erreur : la syntaxe est fausse.
 

& "", """", """""" )




 
l'erreur c'est mémoire insuffisante :D
 
donc pas d'erreur de syntaxe.
 
le fait est que lorsque la chaine fait plus de 245000 et quelques caracteres, on dépasse la capacité [la taille maxi d'une string ? ] et ca provoque donc l'erreur tant ennervante : mémoire insuffisante....
 
que faire ?  [:tomawack]

Reply

Marsh Posté le 04-08-2003 à 21:15:32    

découpe déjà ton code en plusieurs parties afin de voir si le problème vient de ton execute ou alors de la longueur de ta string. De mémoire, je crois me souvenir effectivement que la limite se situe dans cette zone là effectivement (~250000 caractères)

Reply

Marsh Posté le 04-08-2003 à 21:22:27    

Au fait, on peut savoir ce qui nécessite des replaces dans une chaîne aussi longue ?
 
Parceque...
 
1) La fonction replace, tout comme toute fonction de remplacement sera inversement proportionellement rapide que la chaîne sera longue... Y'a donc un problème de taille, tu vas tuer ton serveur là...
 
2) Tes replaces me font penser au nettoyage de données dans un fichier d'import... Y'a pas moyen de le traîter proprement, ligne par ligne, ou pas lots ?

Reply

Marsh Posté le 04-08-2003 à 21:31:14    

Citation :

Au fait, on peut savoir ce qui nécessite des replaces dans une chaîne aussi longue


un journaliste en mal d'écriture :p

Reply

Marsh Posté le 04-08-2003 à 21:41:31    

gfreeman a écrit :

découpe déjà ton code en plusieurs parties afin de voir si le problème vient de ton execute ou alors de la longueur de ta string. De mémoire, je crois me souvenir effectivement que la limite se situe dans cette zone là effectivement (~250000 caractères)


 
decoupage effectué ca revient au meme.
a la fin je fais un seul replace sur une seule variable et ca vautre pareil.
le fait est que je peux meme pas traiter ma chaine bout par bout et la reconcatener puisque 250.000 carac laxis de toute facon...on a pas des variables ultra longues en ASP ? faich'...

Reply

Marsh Posté le 04-08-2003 à 21:42:45    

MagicBuzz a écrit :

Au fait, on peut savoir ce qui nécessite des replaces dans une chaîne aussi longue ?
 
Parceque...
 
1) La fonction replace, tout comme toute fonction de remplacement sera inversement proportionellement rapide que la chaîne sera longue... Y'a donc un problème de taille, tu vas tuer ton serveur là...
 
2) Tes replaces me font penser au nettoyage de données dans un fichier d'import... Y'a pas moyen de le traîter proprement, ligne par ligne, ou pas lots ?


 
c'est l'objet mala [un moteur de templates en ASP] donc j'y suis a peu pret pour rien ds le developpement...
la le probleme viendrait du fait qu'on atteint la limite de la taille des variables...et les découper je sais pas trop...c'est un objet utilisé sur tout le site ca risque de foutre un bordel... [:tomawack]

Reply

Marsh Posté le 04-08-2003 à 21:52:20    

bah tu atteinds les limites d'un language donc forcement :( En plus le fait de doubler les " n'arrange rien :/

Reply

Marsh Posté le 05-08-2003 à 00:30:00    

gfreeman a écrit :

bah tu atteinds les limites d'un language donc forcement :( En plus le fait de doubler les " n'arrange rien :/


 
y'a pas moyen de la contourner cette putain de limite ?
 
parce que 24 ko pour une chaine c'est pas enorme enorme hein...

Reply

Marsh Posté le 05-08-2003 à 00:30:00   

Reply

Marsh Posté le 05-08-2003 à 00:44:06    

moi j'y connais rien du tout mais ça ne serait pas moins gourmand si tu faisais replace par replace au lieu de les superposer?

Reply

Marsh Posté le 05-08-2003 à 00:49:58    

Ca fait pas 24 Ko, mais 240 Ko, ce qui est déjà énorme.
 
Deplus, c'est pas une limitation au niveau du type chaîne, mais de la fonction "replace", qui, je te l'ai dit, offrira des perfs extrêment dégradé. Trouve un moyen pour faire autrement.
 
Les chaînes en VB peuvent être bien plus longues (chais pu si c'est 2 Mo ou 2 Go, mais c'est énorme)

Reply

Marsh Posté le 05-08-2003 à 00:52:19    

Taz a écrit :

moi j'y connais rien du tout mais ça ne serait pas moins gourmand si tu faisais replace par replace au lieu de les superposer?


à mon avis, ça changera rien, la fonction replace est limitée en taille au niveau interne, et c'est pas réellement un problème de mémoire, mais un problème d'adressage dans la fonction.
 
Sinon, zul, va quand même faire un tour dans IIS et regarde l'occupation mémoire max pour un process. Ca pourrait venir de là (mais j'en doute un peu)

Reply

Marsh Posté le 05-08-2003 à 02:24:46    

MagicBuzz a écrit :


à mon avis, ça changera rien, la fonction replace est limitée en taille au niveau interne, et c'est pas réellement un problème de mémoire, mais un problème d'adressage dans la fonction.
 
Sinon, zul, va quand même faire un tour dans IIS et regarde l'occupation mémoire max pour un process. Ca pourrait venir de là (mais j'en doute un peu)


 
ben le fait est qu'on a décomposé tous les replace
a la fin on ne fait plus qu'un
 
execute truc(icount) & "="" tmp &"""  
 
ou un machin du style et la boom.
 
ceci dit, vu que la chaine n'est pas tres cohérente [des cotes des VbCrtl et des conneries] je me demande si je vais pas eliminer d'office tout ce qui fait plus de 240000 chars...
 
 
la suite demaing :D
 
merci pour vos réponses  :hello:


Message édité par ZuL le 05-08-2003 à 02:25:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed