Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Autres EDI > 4D
4D Forum d'entraide sur 4D. Avant de poster -> FAQ 4D
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/06/2012, 13h15   #1
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
Par défaut déclarer un tableau pour le compilateur

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 !
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 13h53   #2
ZeFiF
Membre éprouvé
 
Avatar de ZeFiF
 
Homme Philippe Voisin
Consultant informatique
Inscription : octobre 2008
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Philippe Voisin
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : octobre 2008
Messages : 291
Points : 490
Points : 490
http://doc.4d.com/4D-Langage-13/Tabl...738040.fr.html

ZeFiF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 16h31   #3
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
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 ?
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 16h46   #4
ZeFiF
Membre éprouvé
 
Avatar de ZeFiF
 
Homme Philippe Voisin
Consultant informatique
Inscription : octobre 2008
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Philippe Voisin
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : octobre 2008
Messages : 291
Points : 490
Points : 490
ça dépends des versions de 4D..


Citation:
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 crois que ça fonctionne aussi sur les tableaux.. m'en souviens plus...
ZeFiF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 16h47   #5
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
en tout cas pas avec la v11 ou v12.
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h04   #6
ZeFiF
Membre éprouvé
 
Avatar de ZeFiF
 
Homme Philippe Voisin
Consultant informatique
Inscription : octobre 2008
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Philippe Voisin
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : octobre 2008
Messages : 291
Points : 490
Points : 490
je viens de tester avec la 12.4 c'est bon..

méthode d'appel :
Code :
1
2
TABLEAU TEXTE($tt_test;0)
0_test2 (->$tt_test)
Méthode appelée :
Bizarre que cela ne fonctionne pas chez toi...
ZeFiF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h10   #7
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
et dans ta méthode appelée tu déclares $1 comme ça ?
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h14   #8
ZeFiF
Membre éprouvé
 
Avatar de ZeFiF
 
Homme Philippe Voisin
Consultant informatique
Inscription : octobre 2008
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Philippe Voisin
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : octobre 2008
Messages : 291
Points : 490
Points : 490
bin vi !

ceci dit c'est une locale...
certains parmis nous ne les typent pas,
sans doute à tort quand il s'agit du web....
ZeFiF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h16   #9
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
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
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h31   #10
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
IDEM en 12.4 :

méthode appelante :
Code :
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)
et la méthode appelée :
Code :
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)
Message d'erreur :
Erreur d'exécution à la ligne 57 : il manque une variable.

et c'est pareil si j'ajoute un nom d'ensemble.
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h43   #11
ZeFiF
Membre éprouvé
 
Avatar de ZeFiF
 
Homme Philippe Voisin
Consultant informatique
Inscription : octobre 2008
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Philippe Voisin
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : octobre 2008
Messages : 291
Points : 490
Points : 490
Citation:
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)
ZeFiF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h46   #12
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
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é
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 17h53   #13
ZeFiF
Membre éprouvé
 
Avatar de ZeFiF
 
Homme Philippe Voisin
Consultant informatique
Inscription : octobre 2008
Messages : 291
Détails du profil
Informations personnelles :
Nom : Homme Philippe Voisin
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : octobre 2008
Messages : 291
Points : 490
Points : 490
alors faut faire un copier tableau de ta locale vers un interprocess ou passer un blob ou encore utiliser écrire variable process
ZeFiF est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 20h10   #14
Turtle_fr
Membre du Club
 
Inscription : mai 2006
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 101
Points : 47
Points : 47
Envoyer un message via ICQ à Turtle_fr Envoyer un message via AIM à Turtle_fr Envoyer un message via Skype™ à Turtle_fr
je suis passé par un blob pour me simplifier la vie

voici le code final dans ma méthode appelante :
Code :
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)
et le code dans ma méthode appelée :
Code :
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
Turtle_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h13.


 
 
 
 
Partenaires

Hébergement Web