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

Lazarus Pascal Discussion :

Conflit "USES" FileUtil - Windows : Nombre de paramètres de la fonction CopyFile [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Photographe
    Inscrit en
    Septembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Photographe
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 25
    Points : 30
    Points
    30
    Par défaut Conflit "USES" FileUtil - Windows : Nombre de paramètres de la fonction CopyFile
    bonsoir,

    dans une application fonctionnelle (un setup.exe pour installer une application = noob_coach.exe)),
    je tente d'ajouter la création d'un raccourci de l'application

    j'ai ajouté ce type de code qui fonctionne en solo

    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
    procedure TForm1.Button2Click(Sender: TObject);
    Var
       IObject : IUnknown;
       ISLink : IShellLink;
       IPFile : IPersistFile;
       PIDL : PItemIDList;
       InFolder : array[0..MAX_PATH] of Char;
       TargetName : String;
       LinkName : WideString;
     
    Begin
     
      TargetName :=DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe';
     
        IObject := CreateComObject(CLSID_ShellLink) ;
        ISLink := IObject as IShellLink;
        IPFile := IObject as IPersistFile;
     
       with ISLink do
        begin
          SetPath(pChar(TargetName)) ;
          SetWorkingDirectory(pChar(ExtractFilePath(TargetName))) ;
        end;
     
        SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL) ;
        SHGetPathFromIDList(PIDL, InFolder) ;
     
        LinkName := InFolder + '\noob_coach Link.lnk' ;
     
        IPFile.Save(PWChar(LinkName), false) ;
     
    end;
    en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    uses
     Windows, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ShlObj, ActiveX, ComObj, ExtCtrls,  ExtDlgs, Buttons, UnitGlobales;
    Donc j'explique ma question:

    j'ai donc tenté d'ajouté cette création de raccourci sur le bureau dans mon setup
    j'ai ajouté un bouton plus le code ci dessus
    j'ai ajouté les "USES" nécessaires au code ajouté que je n'avais pas dans le code du setup
    mes "USES" avant l'ajout des nouveaux nécessaires à création raccourci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, EditBtn,
    StdCtrls, ExtCtrls, Process;
    mais j'obtiens un message d'erreur
    Error: Wrong number of parameters specified for call to "CopyFile"
    j'ai tenté de virer 1 à 1 les "USES" ajoutés pour isoler le fautif mais en vain pas moyen de voir celui qui coince !

    j'ai tenté de mettre cette ligne de code entre {CopyFile } pour ne pas l'éxécuter, et là tout est fonctionnel !

    j'ai beau regarder les paramètres attendu par la fonction COPYFILE en faisant 'CTRL SHIFT ESPACE' après parenthèse, tout me parait correct


    pour info:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') Then
    	ShowMessage ('Echec de la copie du fichier !')
    	else
    	ShowMessage ('Installation du programme réussie'+ Chr(13) + DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe');
    j'ai essayé aussi en virant le "if no" et mettre directement le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') ;
    ps: le fichier "*.bin" est un "*.exe" que je transforme par copie/renommage pour éviter que les utilisateurs ne le lance direct sans passer par le setup qui met en plce des répertoire et déplace l'application dans le répertoire ad hoc
    (je pense que cela ne doit pas être un problème lié à ce message d'erreur)
    à terme dans les versions suivantes de mon programme qui est toujours en version béta, je décompresserai sans doute ce fichier (pas encore eu le temps de regarder comment faire, mais ça doit pas être sorcier .... quoique avec le pascal et lazarus ce qui me parait simple ne l'est pas toujours )

    pourriez vous m'aider ?

    merci de votre attention

  2. #2
    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
    Bonsoir ! J'ai lu ton message deux fois (dans un état de lucidité très relatif à cette heure-ci) : je n'ai pas vu la ligne concernée (l'appel de la fonction CopyFile). Ai-je raté quelque chose ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Photographe
    Inscrit en
    Septembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Photographe
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    re

    non je n'ai pas mis la ligne de code
    la voici (je l'ajouterai à mon premier message)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') Then
    	ShowMessage ('Echec de la copie du fichier !')
    	else
    	ShowMessage ('Installation du programme réussie'+ Chr(13) + DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe');
    j'ai essayé aussi en virant le "if no" et mettre directement le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CopyFile('noob_coach.bin',DirectoryEdit1.Directory +'\Noob_Coach\noob_coach.exe') ;
    mais c'est idem, même message d'erreur

    ps: voir premier message mis à jour

  4. #4
    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
    Apparemment il y a une fonction CopyFile dans l'unité Windows et une autre dans l'unité FileUtil (et elles n'ont pas le même nombre de paramètres).

    La solution pourrait être de retirer l'une des deux unités ou, si elles sont toutes les deux utilisées, de changer l'ordre de déclaration ou encore de préfixer le nom de la fonction par le nom de l'unité : Windows.CopyFile() ou FileUtil.CopyFile().

    Si je ne me trompe, le titre de la discussion mériterait d'être changé car ton problème n'est pas la création du raccourci.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Photographe
    Inscrit en
    Septembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Photographe
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    bonjour

    il me semble aussi que ça doit être un problème comme tu le cites ci dessus
    je m'en vais tester tes suggestions.
    Comme c'est le "use" "windows" qui est arrivé après cela doit être lui le problème mais quand j'ai testé en l'enlevant pour voir si la compilation s'effectuait sans problème au niveau de la ligne de code "copyfile" et bien ce fut idem message d'erreur.
    j'ai essayé aussi de passer ce bout de code à des places différentes dans la chaine d'execution mais en vain
    bref, je gratte solution et espère trouver

    pour le titre ...
    je me bois un ou 2 cafés et je reviens ^_^

    merci


    edit:
    j'ai peaufiné le titre en 1 café

    je viens de rapidement tester la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not FileUtil.CopyFile
    et cela fonctionne
    je place RESOLU

    grand merci de votre présence sur ce forum

    edit2: il me revient en tête une réponse que faisait mon prof de math préféré aux types de questions:
    "m'sieur ça sert à quoi les maths ?"
    il répondait:
    "idem que le poirier en gym ... ça sert à rien
    sauf à faire de la gym du corps
    mais pour les maths c'est de la gym de l'esprit"

    et bien il me semble que le pascal c'est un peu idem

    signé : gilgameshh ( qui part d'un pas léger avec un sourire satisfait de celui qui se sent un peu moins con )

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

Discussions similaires

  1. [Débutant] Nombres de paramètres d'une fonction
    Par abel413 dans le forum MATLAB
    Réponses: 30
    Dernier message: 13/06/2013, 14h52
  2. nombre des paramètres d'une fonction
    Par kochfet dans le forum C++
    Réponses: 8
    Dernier message: 11/06/2013, 14h02

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