Re: [prog] Nombre de caractères d'un module.

2006-06-15 Par sujet Adrien Delcour

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.

2006-06-14 Par sujet Bernard Marcelly

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.

2006-06-07 Par sujet Adrien Delcour



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.