Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    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 !

  2. #2
    Membre éprouvé Avatar de ZeFiF
    Homme Profil pro Philippe Voisin
    Consultant informatique
    Inscrit en
    octobre 2008
    Messages
    301
    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 : 301
    Points : 460
    Points
    460

  3. #3
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    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 ?

  4. #4
    Membre éprouvé Avatar de ZeFiF
    Homme Profil pro Philippe Voisin
    Consultant informatique
    Inscrit en
    octobre 2008
    Messages
    301
    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 : 301
    Points : 460
    Points
    460

    Par défaut

    ça dépends des versions de 4D..


    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...

  5. #5
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    en tout cas pas avec la v11 ou v12.

  6. #6
    Membre éprouvé Avatar de ZeFiF
    Homme Profil pro Philippe Voisin
    Consultant informatique
    Inscrit en
    octobre 2008
    Messages
    301
    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 : 301
    Points : 460
    Points
    460

    Par défaut

    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...

  7. #7
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    et dans ta méthode appelée tu déclares $1 comme ça ?

  8. #8
    Membre éprouvé Avatar de ZeFiF
    Homme Profil pro Philippe Voisin
    Consultant informatique
    Inscrit en
    octobre 2008
    Messages
    301
    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 : 301
    Points : 460
    Points
    460

    Par défaut

    bin vi !

    ceci dit c'est une locale...
    certains parmis nous ne les typent pas,
    sans doute à tort quand il s'agit du web....

  9. #9
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    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

  10. #10
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    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.

  11. #11
    Membre éprouvé Avatar de ZeFiF
    Homme Profil pro Philippe Voisin
    Consultant informatique
    Inscrit en
    octobre 2008
    Messages
    301
    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 : 301
    Points : 460
    Points
    460

    Par défaut

    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)

  12. #12
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    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é

  13. #13
    Membre éprouvé Avatar de ZeFiF
    Homme Profil pro Philippe Voisin
    Consultant informatique
    Inscrit en
    octobre 2008
    Messages
    301
    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 : 301
    Points : 460
    Points
    460

    Par défaut

    alors faut faire un copier tableau de ta locale vers un interprocess ou passer un blob ou encore utiliser écrire variable process

  14. #14
    Membre du Club
    Inscrit en
    mai 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 103
    Points : 43
    Points
    43

    Par défaut

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •