Re: [prog] Nombre de caractères d'un module.
Merci pour la réponse. J'ai posé la question sur le forum anglophone, on m'a répondu que la limite d'un module est 64 KB, mais, apparemment, on ne pouvait pas expliquer pourquoi le compilateur déclare trop volumineux le code construit par la macro que j'ai indiquée. Ce n'est pas terrible : quand le compilateur renâclera, je complairai. A. - Original Message - From: Bernard Marcelly [EMAIL PROTECTED] To: prog@fr.openoffice.org Sent: Wednesday, June 14, 2006 3:47 PM Subject: Re: [prog] Nombre de caractères d'un module. Bonjour Adrien Delcour Le comportement a peut-être un peu changé entre 1.1 et 2.0. Comme tu as pu le constater, on peut parfois écrire plus de 65000 caractères, mais on voit diverses anomalies (et parfois avant 65000). Autrement dit, vaut mieux pas faire trop long, c'est pas fiable. D'autre part, quand on récupère par programmation le codage d'un module (voir livre p.611 ed.1 ou p.665 ed.2) on l'obtient dans un String, qui est limité à 65535 caractères en Basic, et peut-être même aussi limité par l'API. Le problème apparaît en général lors de conversion de codes VBA. Avec une conception raisonnable des programmes, on répartit le codage sur plusieurs modules, ce qui augmente la modularité/lisibilité et évite le problème. Bernard - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] Nombre de caractères d'un module.
Bonjour Adrien Delcour Le comportement a peut-être un peu changé entre 1.1 et 2.0. Comme tu as pu le constater, on peut parfois écrire plus de 65000 caractères, mais on voit diverses anomalies (et parfois avant 65000). Autrement dit, vaut mieux pas faire trop long, c'est pas fiable. D'autre part, quand on récupère par programmation le codage d'un module (voir livre p.611 ed.1 ou p.665 ed.2) on l'obtient dans un String, qui est limité à 65535 caractères en Basic, et peut-être même aussi limité par l'API. Le problème apparaît en général lors de conversion de codes VBA. Avec une conception raisonnable des programmes, on répartit le codage sur plusieurs modules, ce qui augmente la modularité/lisibilité et évite le problème. Bernard - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: [prog] Nombre de caractères d'un module.
Je me suis montré un peu paresseux dans mon précédent message, j'ai maintenant fait quelque chose qui permet d'être plus précis. J'ai écrit la macro suivante : Sub EcrireTestTailleModule() Dim ourDocument As Object Dim ourViewCursor As Object Dim i As Long Dim specialChar As Integer Dim ourText As Object Dim noFileProp() ourDocument = StarDesktop.LoadComponentFromURL("private:factory/swriter", "_blank", 0, noFileProp) ourViewCursor = ThisComponent.CurrentController.getViewCursor() ourText = ourViewCursor.getText() specialChar = com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK ourText.insertString(ourViewCursor, "Sub TailleModule()", False) ourText.insertControlCharacter(ourViewCursor, specialChar, False) ourText.insertString(ourViewCursor, "Dim j As Long", False) ourText.insertControlCharacter(ourViewCursor, specialChar, False) ourText.insertString(ourViewCursor, "j = 0", False) ourText.insertControlCharacter(ourViewCursor, specialChar, False) For i = 1 To 5000 ourText.insertString(ourViewCursor, "j = j + 1", False) ourText.insertControlCharacter(ourViewCursor, specialChar, False) Next ourText.insertString(ourViewCursor, "MsgBox j", False) ourText.insertControlCharacter(ourViewCursor, specialChar, False) ourText.insertString(ourViewCursor, "End Sub", False) End Sub Cette macro écrit le texte d'une macro qui comporte la déclaration d'un j de type Long, l'affectation de la valeur 0 à j, puis 5 000 instructions identiques "j = j + 1". Même si on compte la marque de paragraphe pour deux caractères, la macro produite ne compte pas beaucoup plus de 55 000 caractères. Même chose pour le module si le module ne comporte que cette macro. Or, à la "compilation", on reçoit le message "Programme trop volumineux". Il y a une marque à peu près aux deux tiers du programme. On dirait donc qu'ici, la limite est inférieure à 65 000, peut-être quelque chose comme 33 000 (si une marque de paragraphe est comptée pour un seul caractère). Si quelqu'un peut faire une mise au point, merci d'avance. A.