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

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 132
    Points : 1 216
    Points
    1 216
    Par défaut Utilisation de tous les items d'un TlistBos d6 et win10 !
    Bonjour à toutes et à tous,

    Je charge 4 fichiers dans le TlistBox, j'utilises un showmessage pour vérifier l'affichage.

    J'ai une commande qui permet de les fusionner en un seul fichier.

    Cette commande utilise "*.pdf".....

    Est t'il possible de remplacer "*.pdf" par l'ensemble contenu dans mon Tlistbox pour éviter de charger tous les éléments du dossier ?

    J'avais testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "'+lb1.items.text+'"....
    En sachant que ".text" désignait tous les items plutôt que celui sélectionné !

    Mais cela ne fonctionne pas j'ai aussi testé avec la variable integer et count.

    Merci si vous avez une piste.

    @+,

    cincap

    P.S dans le temps j'avais un fichier ".bat" qui correspondait peus t'on le convertir en ".exe" ?

  2. #2
    Membre émérite
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 837
    Points : 2 668
    Points
    2 668
    Par défaut
    Bonjour Cincap,

    cette commande est une commande Dos ? peux tu la détailler ?

    et aussi joindre le contenu de ton bat pour essayer de le construire par programme

    A+
    Charly

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    11 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 11 999
    Points : 21 044
    Points
    21 044
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 132
    Points : 1 216
    Points
    1 216
    Par défaut
    @ Charly910, bonjour et merci de ta réaction rapide.

    En fait c'est toujours pour m'occuper de reprendre des anciennes applications pour les améliorées avec des astuces de codes qu'il n'y avait pas dans le tems.

    cette commande est une commande Dos ? peux tu la détailler ?

    et aussi joindre le contenu de ton bat pour essayer de le construire par programme
    La commande du fichier .bat est déjà retranscrite en Delphi et cela fonctionne telquel même avec ShellExecute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PChar(cmdSwitch + 'pdftk 1.pdf 2.pdf 3.pdf cat output "'+sav1.filename+'"') ;
    L'idée c'était de remplacer le nombre de fichiers par une liste chargée même dans un Tmemo que je suis en train de tester mais sans résultat.

    J'ai déjà pu mettre dans la commande un TSavedialog pour nommer le fichier final.

    @+,

    cincap

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 132
    Points : 1 216
    Points
    1 216
    Par défaut
    @ ShaiLeTroll , merci de ta réponse.

    J'ai tellement essayé des solutions que je connaissais ainsi qu'avec itemindex mais cela fonctionne soit avec le 1er item soit avec le 2ième mais pas avec tous les items.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "'+pchar(lb1.Items[3])+'"
    Ici avec le 3ième fichier repris dans la liste du Tlistbox cela fonctionne.

    Mais si je charge 10 fichiers comment les référencier tous les 10 ?

    Je cherche aussi.

    @+,

    cincap

  6. #6
    Membre averti Avatar de blonde
    Femme Profil pro
    Développeur Embarcadero mutliplateforme
    Inscrit en
    septembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Embarcadero mutliplateforme

    Informations forums :
    Inscription : septembre 2003
    Messages : 198
    Points : 331
    Points
    331
    Par défaut
    Je ne suis pas sûre d'avoir bien compris..

    tu as une Listbox qui affiche des noms de fichiers. Et tu peux faire une multi-sélection dans cette liste. Et ensuite tu voudrais récupérer les items sélectionnés pour les envoyer dans ta commande qui permet de fusionner les fichiers ?
    C'est ça ?

    Et l'endroit où tu bloques, c'est de construire la chaîne qui reprend la liste des fichiers sélectionnés ?

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    11 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 11 999
    Points : 21 044
    Points
    21 044
    Par défaut
    Je ne vois pas non plus ce qui peut bloquer, suffit de reprendre cette réponse et l'adapter, une simple boucle et une concaténation

    Sinon [3] ce n'est pas le troisième mais le quatrième puisque c'est un indice à base zéro
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Membre émérite
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 837
    Points : 2 668
    Points
    2 668
    Par défaut
    Essaye de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Var
      i  : Integer ;
      Chaine : String ;
    Begin
      //  Construction de   Chaine := 'pdftk 1.pdf 2.pdf 3.pdf cat output "' ;
      Chaine := 'pdftk ' ;
      For i := 0 To Lb1.Items.Count -1 Do
        Chaine := Chaine + Lb1.Items[i] + ' ' ;
      Chaine := Chaine + 'cat output "' ;
    End;
    A+
    Charly

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 132
    Points : 1 216
    Points
    1 216
    Par défaut
    @ Charly910, désolé ne fonctionne pas, j'avais aussi testé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var MaStringList : TStringlist;
    i: integer;
    begin
     
     MaStringList := TStringlist.Create;
     
    for i := 0 to ListBox1.Items.Count - 1 do
    begin
    MaStringList.Add(ListBox1.Items.Strings[i]);
    end;
    PChar(cmdSwitch + 'pdftk ' + MaStringList +' cat output "'+ sav1.filename+'"') ;
     
    MaStringList.Free;
    @ tous, merci de vos réponses mais j'ai quand même testé de tout on croirait que c'est au niveau du chemin relatif car si on met ceci "*.pdf" dans la commande cela fonctionne.

    @+,

    cincap

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    11 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 11 999
    Points : 21 044
    Points
    21 044
    Par défaut
    Euh ... le dernier code fourni ne compile même pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MaStringList.Delimiter := ' ';
    MaStringList.QuoteChar := '"';
    MaStringList.DelimetedText dans un Format %s ça serait plus lisible
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre émérite
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 837
    Points : 2 668
    Points
    2 668
    Par défaut
    Je suis étonné que mon code ne fonctionne pas ? as tu affiché Chaine et est ce que cela ne donne pas :

    pdftk 1.pdf 2.pdf 3.pdf cat output "

    A+
    Charly

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 132
    Points : 1 216
    Points
    1 216
    Par défaut
    @ Charly910 attention 1.pdf 2.pdf 3.pdf sont un exemple que l'on peut mettre dans la commande Dos.

    J'aurai pu mettre cincap.pdf ShaiLeTroll.pdf Charly910.pdf, si mes fichiers se nomment comme cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aCmdLine :=PChar(cmdSwitch + 'pdftk cincap.pdf ShaiLeTroll.pdf Charly910.pdf cat output "'+sav1.filename+'"') ;
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aCmdLine :=PChar(cmdSwitch + 'pdftk *.pdf cat output "'+sav1.filename+'"') ; //qui fonctionne très bien mais qui prends tous les fichiers .pdf du dossier !
    Et ce que j'aurai aimé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    aCmdLine :=PChar(cmdSwitch + 'pdftk Mon Tlistbox cat output "'+sav1.filename+'"') ;
    Soit les fichiers .pdf qui se trouve dans un dossier et que je voudrai réunir en un seul avec la commande "pdftk".

    Je ne saurai pas mieux expliquer.

    @+,

    cincap

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    11 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 11 999
    Points : 21 044
    Points
    21 044
    Par défaut
    Citation Envoyé par cincap Voir le message
    Je ne saurai pas mieux expliquer.
    Eh ben, vu que le dernier code semble n'avoir aucun sens, il va falloir trouver mieux.
    Nous étions tous parti sur le premier code avec une énumération explicite des fichiers.

    En fait, c'est une question Delphi ou plutôt une question sur l'utilisation de PDFtk ?

    Join in1.pdf and in2.pdf into a new PDF, out1.pdf

    Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
    pdftk in1.pdf in2.pdf cat output out1.pdf

    or (using handles):

    Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
    pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf

    or (using wildcards):

    Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
    pdftk *.pdf cat output combined.pdf
    il n'y a pas dans la documentation la possibilité de passer un dossier

    En fait, plus on participe à ce sujet moins on comprend le besoin et les codes fournis


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aCmdLine :=PChar(cmdSwitch + Format('pdftk %s cat output "%s"', [GetFileListForCmdPDFTK(ListBox1.Items), sav1.filename]) ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function GetFileListForCmdPDFTK(AList: TStrings): string;
    var
      I: Integer;
    begin
      for I := 0 To AList.Count - 1 do
        Result := Result + Format('"%s" ', [AList[I]);
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  14. #14
    Membre averti Avatar de blonde
    Femme Profil pro
    Développeur Embarcadero mutliplateforme
    Inscrit en
    septembre 2003
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Embarcadero mutliplateforme

    Informations forums :
    Inscription : septembre 2003
    Messages : 198
    Points : 331
    Points
    331
    Par défaut
    Je tente un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
            s : String;
            i : Integer;
    begin
            for i := 0 to ListBox1.items.count - 1 do
            begin
                    if (ListBox1.Selected[i]) then
                            s := s +'  '+Format('"%s"',[ListBox1.items[i]]);
            end;
            ShowMessage(s);
            //PChar(cmdSwitch + 'pdftk ' + s +' cat output "'+ sav1.filename+'"') ;
    parce que j'aime participer, mais que je n'ai toujours pas compris

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 132
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : Belgique

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 132
    Points : 1 216
    Points
    1 216
    Par défaut
    @ blonde, merci de ta participation mais ShaiLeTroll a pointé sur le problème de mon explication.

    @ ShaiLeTroll, ne m'en veux pas, j'ai beaucoup de fichier .pdf qui représente des fiches de salaire mois par mois et avec un ancien fichier .bat je pouvais en réunir 6 et ne faire qu'un seul fichier pour 6 mois soit deux fichiers .pdf par an.

    C'est vrai que la retranscription du fichier .bat en Delphi, il faut respecter les guillemets etc...

    C'est vrai aussi que dans le .bat j'utilisais Pdftk.exe avec *.pdf dans la commande mais j'aimais mieux choisir les fichiers que je voulais fusionner.

    Je viens de tester ta suggestion et comme toujours elle est correcte car elle fonctionne.

    Sauf une parenthèse et un crochet que tu as oublié car j'avais une erreur lors de la compilation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function GetFileListForCmdPDFTK(AList: TStrings): string;
    var
      I: Integer;
    begin
      for I := 0 To AList.Count - 1 do
        Result := Result + Format('"%s" ', [AList[I]]);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    aCmdLine :=PChar(cmdSwitch + Format('pdftk %s cat output "%s"', [GetFileListForCmdPDFTK(LB1.Items), sav1.filename])) ;
    Maintenant c'est correct et le topic peut être fermé.

    Encore merci à toi.

    Cordialement,

    @+,

    cincap

  16. #16
    Membre émérite
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    décembre 2006
    Messages
    1 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : décembre 2006
    Messages : 1 837
    Points : 2 668
    Points
    2 668
    Par défaut
    Ah finalement, c'était une histoire de double cote !

    A+
    Charly

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/08/2007, 22h50
  2. Selectionner tous les items d´une liste lors du submit
    Par makohsarah dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/07/2007, 12h50
  3. Réponses: 2
    Dernier message: 31/08/2006, 11h20
  4. Pour qu'un logiciel ne soit utiliser dans tous les sessions
    Par mouloudéen dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 14/12/2005, 19h10
  5. changer le texte de tous les Items dans un mainmenu
    Par C.M dans le forum Composants VCL
    Réponses: 7
    Dernier message: 25/07/2004, 13h19

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