IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

Passage d'un tableau en paramètre de la fonction ShellExecute


Sujet :

Free Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut Passage d'un tableau en paramètre de la fonction ShellExecute
    Bonsoir tout le monde,

    Il se fait un peu tard mais je recherche un peu d'aide pour le problème suivant :

    Je dois lancer n fois le même exécutable et à chaque exécution l'exécutable se voit attribuer des paramètres différents.
    Pour l'instant je répète 80 fois la ligne de commande avec les paramètres appropriés, ce qui n'est pas optimal.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Parameters : Array [1..80] of string;
     
    ShellExecute(0, 'open', 'C:\Users\Yaacov\Desktop\TEST\TEST_DATE', @Parameters[I], nil, 1)
    mais je n'arrive pas à récuperer les valeurs appropriées avec paramstr(1), paramstr(2), paramstr(3) etc dans le Pgm appelé.

    Idéalement j'aurais voulu faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For  I:= 1 to 80 do ShellExecute(0, 'open', 'C:\Users\Yaacov\Desktop\TEST\TEST_DATE', @Parameters[I], nil, 1)
    Merci pour vos suggestions et conseils.
    Bonne soirée.

  2. #2
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 328
    Points : 4 145
    Points
    4 145
    Par défaut Paramètres
    Bonsoir,

    Deux instructions : ParamCount et ParamStr(i). Je conseille d'aller voir la doc en ligne de Lazarus ne serait-ce que pour les exemples pour divers systèmes d'exploitation. L'usage ne sert pas qu'aux programme en ligne de commande. Si on fait un glisser déposer sur un programme ou son raccourci, ce qui est déposé est passé par les même arguments.

    Exemple de création d'une liste de chiers passés en argument.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strs := TStringList.Create;
    for i := 1 to ParamCount do if FileExists(ParamStr(i)) then strs.Add(ParamStr(i));
    ParamStr(0) est le premier argument c'est à dire le nom du programme exécuté.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Le paramètre est incorrect.

    Une variable chaîne est un pointeur, un tableau de chaînes est donc un tableau de pointeurs. En utilisant @Parameters[I] tu lui passes l'adresse du pointeur de la chaîne et non l'adresse du premier caractère de la chaîne.

    Lorsqu'on comprend que @Parameters[I] retourne un pointeur, on pourrait compléter la déclaration et dire je veux l'adresse du premier élément @Parameters[I][1] mais ce n'est pas très intuitif ! A la place, donnons simplement à ShellExecute le type de paramètre qu'elle attend PChar(Parameters[I]). PChar se charge pour nous de toutes ces redirections

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Le paramètre est incorrect.

    Une variable chaîne est un pointeur, un tableau de chaînes est donc un tableau de pointeurs. En utilisant @Parameters[I] tu lui passes l'adresse du pointeur de la chaîne et non l'adresse du premier caractère de la chaîne.

    Lorsqu'on comprend que @Parameters[I] retourne un pointeur, on pourrait compléter la déclaration et dire je veux l'adresse du premier élément @Parameters[I][1] mais ce n'est pas très intuitif ! A la place, donnons simplement à ShellExecute le type de paramètre qu'elle attend PChar(Parameters[I]). PChar se charge pour nous de toutes ces redirections
    Super ca marche Grand Merci Andnotor pour la réponse fournie de surcroit pendant un Dimanche
    et merci également a Guesset pour sa réponse écrite a une heure tardive.

    PS:
    J'ai un dernier petit problème.
    Chaque exécution du programme appelé crée son propre fichier de résultats. Je voudrais Concaténer tous les fichiers de résultats à l'aide d'une instruction dans le programme appelant.
    Pour se faire je veux être sûr que toutes les n exécutions soient terminées.
    Quelle serait l'instruction la plus appropriée (J'ai noté la fonction WaitForSingleObject(processInfo.hProcess, INFINITE)) ?
    Merci et bon dimanche.

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour ! Concernant votre seconde question, peut-être l'exemple ci-joint vous sera-t-il utile. Je l'ai trouvé sur ce site, où il y a pas mal de choses intéressantes : { https://assarbad.net }
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Bonjour ! Concernant votre seconde question, peut-être l'exemple ci-joint vous sera-t-il utile. Je l'ai trouvé sur ce site, où il y a pas mal de choses intéressantes : { https://assarbad.net }
    Bonjour Roland,


    Merci pour la réponse je vais regarder cela de plus près.
    Salutations

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par jacco Voir le message
    Merci pour la réponse je vais regarder cela de plus près.
    Pas de quoi.

    Notez que l'unité se compile en mode Delphi. Pour compiler en mode ObjFpc, il faut ajouter des @ ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {$IFDEF UNICODE}
      @ShellExecuteAndWaitW;
    {$ELSE}
      @ShellExecuteAndWaitA;
    {$ENDIF}
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Pas de quoi.

    Notez que l'unité se compile en mode Delphi. Pour compiler en mode ObjFpc, il faut ajouter des @ ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {$IFDEF UNICODE}
      @ShellExecuteAndWaitW;
    {$ELSE}
      @ShellExecuteAndWaitA;
    {$ENDIF}
    Bonjour Roland,

    Je n'ai pas creusé la question de ShellExecuteAndWaitW et ShellExecuteAndWaitA cependant je poste ci-dessous le code de lancement de la fonction ShellExecute avec passage de paramètres pour chaque exécution pour ceux que cela pourrait aider. (Il est très possible que l'on puisse apporter des améliorations)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    program DDD_Launch;
     
    {$mode objfpc}{$H+}
     
    uses
      CRT,VARIANTS,Math,SysUtils,Dos,
           Process,Windows;
      { you can add units after this }
     
    Var  I,J:Integer;
      Arguments : String;
      Parameters,  CalculSplit : Array [1..80] of string;
     
    begin
     
     
    // Paramètres permettant de segmenter un calcul de 3 loops imbriquées. Ces paramètres segmentent la loop la plus externe.
    // je n'ai pas segmenté au-delà de 27 process. Avec 27 l'utilisation de la  CPU était déjà a 100%.
     
      CalculSplit[1] := '1 3';
      CalculSplit[2] := '4 6';
      CalculSplit[3] := '7 9';
      CalculSplit[4] := '10 12';
      CalculSplit[5] := '13  15';
      CalculSplit[6] := '16  18';
      CalculSplit[7] := '19  21';
      CalculSplit[8] := '22  24';
      CalculSplit[9] := '25  27';
      CalculSplit[10] := '28  30';
      CalculSplit[11] := '31  33';
      CalculSplit[12] := '34  36';
      CalculSplit[13] := '37  39';
      CalculSplit[14] := '40  42';
      CalculSplit[15] := '43  45';
      CalculSplit[16] := '46  48';
      CalculSplit[17] := '49  51';
      CalculSplit[18] := '52  54';
      CalculSplit[19] := '55  57';
      CalculSplit[20] := '58  60';
      CalculSplit[21] := '61  63';
      CalculSplit[22] := '64  66';
      CalculSplit[23] := '67  69';
      CalculSplit[24] := '70  72';
      CalculSplit[25] := '73  75';
      CalculSplit[26] := '76  78';
      CalculSplit[27] := '79 80';
     
    // Attention le caractere blance entre le '  et le 0 ci-dessous est tres important pour un passage correcte des parametres
     
      Arguments :=  ' 0   10   0.001   0.4   1000000  3438178.917719  -19.33';
     
      For I := 1 to 27 Do
      Begin
           Parameters[I] := CalculSplit[I] + Arguments;
           J := ShellExecute(0, 'open','C:\Users\Yaacov\Desktop\DDD5mnTest\DDD5mnTest', Pchar(Parameters[I]), nil, 1);
       End ;
     
    End.
    merci pour l'aide a tout le monde (Andnotor, Guesset, et Roland Chastain)

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par jacco Voir le message
    // Attention le caractere blance entre le ' et le 0 ci-dessous est tres important pour un passage correcte des parametres
    Ca c'est le genre de détail que tu devrais traiter à la concaténation de la chaîne. Une fois tu l'oublieras et tu te demanderas pourquoi tu as une erreur sur le Nième paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Parameters[I] := CalculSplit[I] +' ' +Arguments;
    //ou
    Parameters[I] := string.Join(' ' ,[CalculSplit[I], Arguments]);
    ps: est-ce vraiment nécessaire que Parameters soit un tableau

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ca c'est le genre de détail que tu devrais traiter à la concaténation de la chaîne. Une fois tu l'oublieras et tu te demanderas pourquoi tu as une erreur sur le Nième paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Parameters[I] := CalculSplit[I] +' ' +Arguments;
    //ou
    Parameters[I] := string.Join(' ' ,[CalculSplit[I], Arguments]);
    ps: est-ce vraiment nécessaire que Parameters soit un tableau

    Bonjour Andnotor,

    Je retiens ta remarque et je vais modifier mon code.
    Pour le tableau qu'est ce que tu proposerais à la place qui permettrait un indiçage ?
    Salutations

  11. #11
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par jacco Voir le message
    Pour le tableau qu'est ce que tu proposerais à la place qui permettrait un indiçage ?
    Dans l'exemple que vous avez posté, une simple variable de type string ferait l'affaire.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Dans l'exemple que vous avez posté, une simple variable de type string ferait l'affaire.
    Salut Roland,

    Si je t'ai bien compris,
    Si je passe une string ou tous les paramètres seront séparés par des blancs a chaque appel de Shellexecute paramstr(1) et paramstr(2) seront initialises par de nouvelles valeurs tirées de la String ?
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    S:String;
       S:= '1 3 4 6 7 9 ....
    Au 1er appel de Shellexecute paramstr(1) et paramstr(2) dans le Pgm appelé seront initialises respectivement avec 1 et 3 ?

    Au 2eme appel de Shellexecute paramstr(1) et paramstr(2) dans le Pgm appelé seront initialises respectivement avec 4 et 6 ?

    Au 3eme appel de Shellexecute paramstr(1) et paramstr(2) dans le Pgm appelé seront initialises respectivement avec 7 et 9 ?

    etc .....

    avec J := ShellExecute(0, 'open','C:\Users\Yaacov\Desktop\AMD5mnTest\AMD5mnTest', Pchar(S), nil, 1); ?

    Et le reste de mes paramètres '0 10 0.001 0.4 1000000 3870385.389470 -19.33' seront passes respectivement a paramstr(3), paramstr(4),paramstr(5), paramstr(6),paramstr(7), paramstr(8), et paramstr(9) ?

  13. #13
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Citation Envoyé par jacco Voir le message
    Si je passe une string ou tous les paramètres seront séparés par des blancs a chaque appel de Shellexecute paramstr(1) et paramstr(2) seront initialises par de nouvelles valeurs tirées de la String ?
    Ca paraît assez logique non

    Indépendamment de AMD5mnTest, c'est à toi de savoir si tu as l'utilité pour un autre usage de stocker ces données dans un tableau. ShellExecute elle attend une chaîne ; que ce soit une variable, une constante, qu'elle soit extraite d'un tableau, d'une base de données, d'un fichier json ou par tout autre méthode n'a aucune espèce d'importance.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    Ca paraît assez logique non

    Indépendamment de AMD5mnTest, c'est à toi de savoir si tu as l'utilité pour un autre usage de stocker ces données dans un tableau. ShellExecute elle attend une chaîne ; que ce soit une variable, une constante, qu'elle soit extraite d'un tableau, d'une base de données, d'un fichier json ou par tout autre méthode n'a aucune espèce d'importance.
    Salut Andnotor,

    Excuse mon incomprehension mais je n'arrive pas a m'expliquer le point suivant.
    Avec l'appel de ShellExecute quand je vais passer la chaine S qui contiendra toutes les valeurs de mon tableau (i.e. 54 valeurs ) qu'est ce qui va piloter l'allocation seulement des deux premieres valeurs de S à paramstr(1) et paramstr(2) et non pas les 9 premieres valeurs tirees de S à paramstr(1), paramstr(2), paramstr(3), paramstr(4),paramstr(5), paramstr(6),paramstr(7), paramstr(8), et paramstr(9). Et dans ce cas les autres parametres '0 10 0.001 0.4 1000000 3870385.389470 -19.33' évidemment sont ignorés. (ou toute autre combinaison entre S et le 2eme groupe de parametres)
    Merci pour ta patience.

    PS pour info: J'ai ete forme au Pascal au CNAM à Paris ds les annees 80 ...

  15. #15
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 688
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 688
    Points : 13 117
    Points
    13 117
    Par défaut
    Je ne comprends pas ta question. Si tu lui passes 9 paramètres, la cible en recevra 9.

    Non il n'y a pas d'allocation, ParamStr est juste une fonction de parsing de la ligne de commande (une chaîne gérée par le système représentant l'exe et les paramètres délimités par des espaces).

  16. #16
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par jacco Voir le message
    Si je t'ai bien compris,
    Si je passe une string ou tous les paramètres seront séparés par des blancs a chaque appel de Shellexecute paramstr(1) et paramstr(2) seront initialises par de nouvelles valeurs tirées de la String ?
    Non, je voulais simplement dire que dans ce morceau de code, le tableau Parameters n'était pas utile, et qu'on pouvait le remplacer par une simple variable. C'est une remarque qui n'avait pas grande importance.

    Mais quelque chose me dit qu'il y a une manière plus simple de faire ce que vous voulez faire.

    Si je reviens au début de la discussion, vous vouliez passer un tableau à votre programme principal. Pourquoi ne pas lui passer le nom d'un fichier dans lequel se trouveraient toutes les données ? Le programme n'aurait qu'à ouvrir le fichier et à le lire ligne à ligne.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Non, je voulais simplement dire que dans ce morceau de code, le tableau Parameters n'était pas utile, et qu'on pouvait le remplacer par une simple variable. C'est une remarque qui n'avait pas grande importance.

    Mais quelque chose me dit qu'il y a une manière plus simple de faire ce que vous voulez faire.

    Si je reviens au début de la discussion, vous vouliez passer un tableau à votre programme principal. Pourquoi ne pas lui passer le nom d'un fichier dans lequel se trouveraient toutes les données ? Le programme n'aurait qu'à ouvrir le fichier et à le lire ligne à ligne.
    Roland Bonjour,

    Merci pour la reponse.
    Je voudrais repreciser Le Pb. Je cherche a decouper un calcul realiser par 3 boucles imbriquees. Le decoupage tres logiquement ne peut porter initialement que sur la boucle plus externe.
    Le tableau que je passe en parametres permet le decoupage il passe les bornes de chaque calcul partiel et il est naturellement indicé.
    La deuxieme partie des parametres '0 10 0.001 0.4 1000000 3870385.389470 -19.33' est fixe.

    Votre solution avec une String S consignant chaque couple des bornes de chaque calcul parait plus simple mais je ne sais pas comment se debrouille Shellexecute lorsque je lui passeriai S + la partie fixe des parametres pour associer a chaque calcul partiel n le couple n des bornes du calcul + la partie fixe des parametres (et dans ce cas l'instruction For I:= 1 to 27 disparait ? ).
    Ce qui devrait donner quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    S:='1 3 4 6 7 9 10 12 13 15 ....79 80'  
    S := S + ' 0 10 0.001 0.4 1000000 3870385.389470 -19.33'   ??
    J := ShellExecute(0, 'open','C:\Users\Yaacov\Desktop\DDD5mnTest\DDD5mnTest', S, nil, 1);
    ??

    Merci de m'éclairer sur ce point.

    S'agissant de la solution avec un fichier j'ai peur que cela soit plus couteux en temps machine.

    Bien à vous

  18. #18
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Non, l'idée, c'était ça tout simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      For I := 1 to 27 Do
      Begin
           S := CalculSplit[I] + Arguments;
           J := ShellExecute(0, 'open','C:\Users\Yaacov\Desktop\DDD5mnTest\DDD5mnTest', Pchar(S), nil, 1);
       End ;
    C'est-à-dire utiliser une simple variable au lieu du tableau Parameters qui est inutile, puisque (d'après ce qu'on voit) vous ne réutilisez pas ensuite la valeur de Parameters[I]. Mais c'était un détail.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2020
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2020
    Messages : 33
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Non, l'idée, c'était ça tout simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      For I := 1 to 27 Do
      Begin
           S := CalculSplit[I] + Arguments;
           J := ShellExecute(0, 'open','C:\Users\Yaacov\Desktop\DDD5mnTest\DDD5mnTest', Pchar(S), nil, 1);
       End ;
    C'est-à-dire utiliser une simple variable au lieu du tableau Parameters qui est inutile, puisque (d'après ce qu'on voit) vous ne réutilisez pas ensuite la valeur de Parameters[I]. Mais c'était un détail.
    Ok Roland .
    Comme on dit en Anglais "Now I am with you"
    (Vraiment j'ai tourné cela dans tous les sens, pour comprendre et la réponse était toute simple)
    Merci je vais implémenter votre idée.
    Bonne journée

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/09/2007, 13h38
  2. Réponses: 11
    Dernier message: 18/07/2007, 10h43
  3. Réponses: 6
    Dernier message: 24/07/2006, 15h22
  4. Procédure stockée : passage d'un tableau en paramètres
    Par thomas_strass dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/05/2006, 14h52
  5. [JpGraph] Passage d'un tableau en paramètre dans une URL pour JPgraph
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/01/2006, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo