Modification de macros

Je me souviens qu’avant, dès que je modifiais mon fichiers des macros, le menu macros se mettait à jour dynamiquement. Avec la v17 en client serveur, je dois reconnecter mon client à la base pour que les modifications apparaissent dans le menu macros, c’est moins pratique.
À quoi est due la disparition du mode dynamique ?

Je le modifie rarement et, du coup, je ne sais jamais bien à quoi je dois m’attendre. Mais je crois bien qu’on doive nécessairement quitter en c/s (depuis toujours…).

J’ai probablement toujours fait joujou avec ce fichier en monoposte, alors. Précision, je n’ai pas besoin de quitter 4D, la re connexion à la base suffit. Je ne vois pas la raison de cette différence. Merci, en tout cas :slight_smile:

C’est pour t’habituer à le faire avec ORDA :roll:

Ok, je :arrow:[]

La macro en question ayant pour but de remplacer les OB lire/écrire en notation à point, le haut comité des exclusions temporaires a statué que ORDA/notation à point = même combat et que par conséquent tu pouvais ne pas sortir.

tu veux dire :

par conséquent, tu NE pouvais PAS ne pas sortir. :razz:

Effectivement :razz:

Elle fait quoi ta macro, elle tape des points !??

: Eric TROTTA

Elle fait quoi ta macro, elle tape des points !??

c’est pour que des choses comme :
OB FIXER($table_o;“nom”;Nom de la table($table_l))
deviennent :
$table_o.nom:=Nom de la table($table_l)
À faire à la main, ça me salit trop le clavier. Ça remplace juste la sélection dans l’éditeur de code, faire un remplacement global automatisé me semble plus compliqué. Le OB lire n’est pas terminé, mais le OB fixer marche, je te mets où c’en est.

  //MACRO_OBversDot 
  //macro pour remplacer les moches OB FIXER et OB lire 
  //  par de belles notations à point
  //Raccourci clavier = alt+cmde+o

$us_b:=(Nom commande(1)="sum")
LIRE PARAMÈTRE MACRO(Texte méthode surligné;$find_t)

TABLEAU ENTIER LONG($pos_al;0)
TABLEAU ENTIER LONG($len_al;0)
$rxOBset_t:=Nom commande(1120)+"\\((.*);\"(.*)\";(.*)\\)"  //:C1120 = OB FIXER
$rxOBget_t:="^(.*):="+Nom commande(1224)+"\\((.*);\"(.*)\"(;(.*))?\\)"  //:C1224 = OB Lire
$replace_t:=""

Au cas ou 
	: (Trouver regex($rxOBset_t;$find_t;1;$pos_al;$len_al))
		$objet_t:=Sous chaîne($find_t;$pos_al{1};$len_al{1})
		$propriete_t:=Sous chaîne($find_t;$pos_al{2};$len_al{2})
		$valeur_t:=Sous chaîne($find_t;$pos_al{3};$len_al{3})
		$replace_t:=$objet_t+"."+$propriete_t+":="+$valeur_t
		$replace_t:=$replace_t+"\r//"+$find_t
		
	: (Trouver regex($rxOBget_t;$find_t;1;$pos_al;$len_al))
		$resultat_t:=Sous chaîne($find_t;$pos_al{1};$len_al{1})
		$objet_t:=Sous chaîne($find_t;$pos_al{2};$len_al{2})
		$propriete_t:=Sous chaîne($find_t;$pos_al{3};$len_al{3})
		$avecTypage_b:=(Taille tableau($pos_al)>3)
		Si ($avecTypage_b)
			$typage_t:=Sous chaîne($find_t;$pos_al{4};$len_al{4})
			Au cas ou 
				: ($typage_t="Est un booléen") | ($typage_t="Is Boolean")
					TRACE  //$conversion_t:=Nom commande(11)  //Num
				: ($typage_t="Est une date") | ($typage_t="Is date")
					$conversion_t:=Nom commande(102)  //Date
				: ($typage_t="Est un entier long") | ($typage_t="Est un numérique") | ($typage_t="Is longint") | ($typage_t="Is real")
					$conversion_t:=Nom commande(11)  //Num
				Sinon 
					TRACE
			Fin de cas 
		Sinon 
			$conversion_t:=""
		Fin de si 
		Si ($avecTypage_b)
			$replace_t:=$objet_t+"."+$propriete_t+":="+$valeur_t
		Sinon 
			$replace_t:=$objet_t+"."+$propriete_t+":="+$valeur_t
		Fin de si 
		$replace_t:=$replace_t+"\r//"+$find_t
		
	Sinon 
		BEEP  //motif non trouvé dans la sélection
		
Fin de cas 

Si ($replace_t#"")
	FIXER PARAMÈTRE MACRO(Texte méthode surligné;$replace_t)
Fin de si 
  //_
: Arnaud DE MONTARD

je te mets où c’en est.
Voilà, ça a l’air de tourner, je l’ai mis https://forums.4d.com/Post/FR/30700090/0/0/là>.
Pour remplacer au fil de l’eau, c’est un peu moins fastidieux qu’avant.