Bonjour,
je passe en paramètre d'une fonction un tableau et dans cette fonction je déclare les $1, $2 ,$3, etc.
J'ai un gros trou de mémoire, je me rappelle plus comment déclarer ($1 par exemple) quand il s'agit d'un tableau ?
Merci !
Bonjour,
je passe en paramètre d'une fonction un tableau et dans cette fonction je déclare les $1, $2 ,$3, etc.
J'ai un gros trou de mémoire, je me rappelle plus comment déclarer ($1 par exemple) quand il s'agit d'un tableau ?
Merci !
Autant pour moi, j'ai oublié de préciser que je passe une variable locale de type tableau (je ne peux pas passer une variable process) et sauf erreur on ne peut pas utiliser les pointeurs sur ces variables d'où ma question : comment déclarer un tableau ?
ça dépends des versions de 4D..
Je crois que ça fonctionne aussi sur les tableaux.. m'en souviens plus...Note sur les variables locales : Les pointeurs vers des variables locales permettent dans de nombreux cas d’économiser des variables process. Les pointeurs vers des variables locales peuvent être utilisés uniquement à l’intérieur d’un même process.
Dans le débogueur, lorsque vous affichez un pointeur vers une variable locale déclarée dans une autre méthode, le nom de la méthode d’origine est indiquée entre parenthèses, derrière le pointeur. Par exemple, si vous écrivez dans Méthode1 :
$MaVar:="Bonjour"
Méthode2(->$MaVar)
je viens de tester avec la 12.4 c'est bon..
méthode d'appel :
Méthode appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TABLEAU TEXTE($tt_test;0) 0_test2 (->$tt_test)
Bizarre que cela ne fonctionne pas chez toi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part $vp_point:=$1
et dans ta méthode appelée tu déclares $1 comme ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part C_POINTEUR($1)
bin vi !
ceci dit c'est une locale...
certains parmis nous ne les typent pas,
sans doute à tort quand il s'agit du web....
je suis encore en 12.3 et quand je fais le code à l’identique j'ai droit à une belle erreur de la part de 4D
je télécharge la v12.4 et je refais le test
ps ce n'est pas pour du web mais ça ne change rien à la demande
IDEM en 12.4 :
méthode appelante :
et la méthode appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TABLEAU ENTIER LONG SUR SELECTION([Factures];$t_Factures) $process:=Numero du process courant $proc:=Nouveau process("Traitement_Factures";128*1024;"Impression & Copie Factures";->$t_Factures;$select_ImpressionPapier;$selectServLocal;$selectServDistant;$selectPDF;$template;$duplicata;$serveurFTP;$loginFTP;$passwordFTP;$relanceFactureMail;$process)
Message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 C_POINTEUR($1) C_BOOLEEN($2;$3;$4) V_Select_ImpressionPapier:=$2 V_SelectServLocal:=$3 V_SelectServDistant:=$4 C_ALPHA(100;$5;$6;$7;$8;$9;$10) V_SelectEmail:=$5 V_Template:=$6 V_Duplicata:=$7 V_ServeurFTP:=$8 V_LoginFTP:=$9 V_PasswordFTP:=$10 C_ENTIER($11) CB_RelanceFactureMail:=$11 C_ENTIER LONG($12) V_Ref_Process:=$12 C_BOOLEEN(V_Creation_FichierTemporaire) V_Creation_FichierTemporaire:=Faux CREER ENSEMBLE SUR TABLEAU([Factures];$1)
Erreur d'exécution à la ligne 57 : il manque une variable.
et c'est pareil si j'ajoute un nom d'ensemble.
Note sur les variables locales : Les pointeurs vers des variables locales permettent dans de nombreux cas d’économiser des variables process. Les pointeurs vers des variables locales peuvent être utilisés uniquement à l’intérieur d’un même process.
Dans le débogueur, lorsque vous affichez un pointeur vers une variable locale déclarée dans une autre méthode, le nom de la méthode d’origine est indiquée entre parenthèses, derrière le pointeur. Par exemple, si vous écrivez dans Méthode1 :
$MaVar:="Bonjour"
Méthode2(->$MaVar)
que ce la variable soit locale (->$t_Factures) ou process (->T_Factures), dans les 2 cas je ne récupère pas mon tableau dans le process appelé
alors faut faire un copier tableau de ta locale vers un interprocess ou passer un blob ou encore utiliser écrire variable process
je suis passé par un blob pour me simplifier la vie
voici le code final dans ma méthode appelante :
et le code dans ma méthode appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TABLEAU ENTIER LONG SUR SELECTION([Factures];$t_Factures) VARIABLE VERS BLOB($t_Factures;B_Factures) $proc:=Nouveau process("Traitement_Factures";128*1024;"Impression & Copie Factures";B_Factures;$select_ImpressionPapier;$selectServLocal;$selectServDistant;$selectPDF;$template;$duplicata;$serveurFTP;$loginFTP;$passwordFTP;$relanceFactureMail;$process)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 BLOB VERS VARIABLE($1;T_Factures) // on récupère le tableau dans le blob passé en paramètre ($1) CREER ENSEMBLE SUR TABLEAU([Factures];T_Factures) DEBUT SELECTION([Factures]) Tant que (Non(Fin de selection([Factures]))) [......] ENREGISTREMENT SUIVANT([Factures]) Fin tant que
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager