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

Delphi Discussion :

Lancer un executable à partir de Delphi, et Interface entre Delphi/MATLAB


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 51
    Points : 39
    Points
    39
    Par défaut Lancer un executable à partir de Delphi, et Interface entre Delphi/MATLAB
    Bonsoir à tous,
    je suis nouvelle sur ce forum

    pour mon projet de fin d'année je vais travailler avec Delphi et Matlab.
    je connais Delphi, et j'ai quelques notions de base sur Matlab.
    Mais je n'arrive pas à relier Matlab à delphi. chose que je devrai faire.

    Dans un premier temps, je veux que Matlab soit lancé à partir d'une fenêtre de Delphi. (lancer un executable à partir de Delphi)

    J'ai trouvé la commande suivante:
    shellexecute(handle,nil,'C:\Matlab7\bin\win32\MATLAB.exe',nil,nil,sw_show);
    bien sûr en indiquant le chemin de l'exe de Matlab, mais ça n'a pas marché.
    Dès que je lance le mode d'exécution (F9), on me dit "Variable non déclarée: shellexecute", donc je ne sais pas si c la bonne commande! Est ce qu'il y a une erreur quelque part? ou Y a-t-il une autre commande me permettant de faire ceci?

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    C'est la bonne commande, mais comme pour certaines commandes un peu 'exotique' il faut rajouter la bibliothèque correspondante.
    Tu trouves l'explication ici : http://delphi.developpez.com/faq/?pa...terapplication
    (c'est la biblio ShellApi qu'il faut donc rajouter dans ton cas).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Bonsoir

    Effectivement Tu dois ajouter l'unité ShellApi dans la clauses uses de ton unité.

    Sinon les fichiers Mex ne sont supportés actuellement que par les languages C et Fortran.
    voir ici

    En recherchant sur google il y a peut être de nouvelles pistes.

    ICI
    une lib delphi pour créer des fichiers MatLab.

    @+

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je ne connais pas MatLab mais ne peux tu pas avoir de fonctions d'export de tes fichiers en CSV par exemple ?
    sinon : http://www.delphi3000.com/articles/article_3271.asp?SK=

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Le mieux serait de monter l'activex MATLAB dans la palette de composants
    et manipuler une instance de MATLAB directement dans Delphi.

    Le site possède également un forum MATLAB

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 21
    Points
    21
    Par défaut
    Essai le lien suivant :

    http://j.krt.tul.cz/ms/matlab.delphi/delphi.matlab.htm

    Il y a une solution pour créer une DLL en Delphi compatible MATLAB mais ça date un peu (MATLAB 5.1).

    Autre solution pas très élégante mais efficace en temps de codage (si c'est pour un essai c'est valable) :
    - accèder à MATLAB en OLE automation pour le piloter, voir l'exemple sur la même page
    par contre passer des gros fichiers en OLE (> 10 Mo), c'est pas terrible.
    Une solution, c'est de créer un disque virtuel en mémoire et de passer par un fichier externe (j'ai déjà tester ce principe avec des programmes Fortran).
    Pour le disque virtuel: starport de www.rocketdivision.com, la version d'essai permet de créer uniquement un ramdisk et c'est ce qu'il nous faut.

  7. #7
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut [D3] Exécutable
    Bonjour,

    On trouve dans D3 une unité FMXUTILS qui contient une fonction EXECUTEFILE présentée comme une alternative a ShellExecute de Windows et plus simple d'utilisation.

    Executefile necessite 3 paramètres chaîne et un 4° ...
    Les 3 chaînes représentent :
    - le nom du fichier (chemin complet compris),
    - les paramètres de la ligne de commande à transmettre à l'application,
    - le répertoire de démarrage.
    Le dernier param. est une constante Windows utilisée par la fonction ShowWindow de l'API :
    SW_SHOW fénêtre normale, SW_SHOWNORMAL (que j'ai utilisé) ...
    Ci dessous la fonction en question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function ExecuteFile(const FileName, Params, DefaultDir: string;
      ShowCmd: Integer): THandle;
    var
      zFileName, zParams, zDir: array[0..79] of Char;
    begin
      Result := ShellExecute(Application.MainForm.Handle, nil,
      StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),
      StrPCopy(zDir, DefaultDir), ShowCmd);
    end;
    Personnellement j'ai utilisé cette fonction pour éxécuter des programmes DOS dans une fenêtre Delphi (LIST ...) sans probléme.

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 51
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Fabrice ROUXEL 1
    Bonsoir
    Effectivement Tu dois ajouter l'unité ShellApi dans la clauses uses de ton unité.
    Merci bcp à chacun de vous pour vos messages, et d'avoir pris le temps de me répondre.

    j'ai rajouté effectivement ShellApi dans uses et c t reglé! (merci Fabrice ROUXEL 1)

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

Discussions similaires

  1. lancer un executable à partir de java
    Par MariaDV dans le forum NetBeans
    Réponses: 1
    Dernier message: 17/03/2010, 14h29
  2. Créer une Interface entre Delphi/Matlab
    Par Yearning dans le forum MATLAB
    Réponses: 1
    Dernier message: 29/03/2007, 09h12
  3. Réponses: 1
    Dernier message: 04/08/2006, 12h31
  4. Lancer un executable à partir d'un exe
    Par Invité dans le forum MFC
    Réponses: 4
    Dernier message: 26/01/2004, 12h55

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