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 :

comment recuperer le nom du repertoire sans utiliser application


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut comment recuperer le nom du repertoire sans utiliser application
    Bonjour,
    J'ai besoin d'un truc en delphi qui me rend le nom du repertoire courant où il y a ma dll. en fait je sais qu'il y a le extractfilepath(application.name) en delphi, mais je ne peux pas l'utiliser ici car dans une dll on n'a pas l'objet application.

    N.B: je n'ai pour le moment que le code, donc la dll n'est pas encore générée.

    Merci d'avance les amis.

  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
    Si tu as un EXE, qui est dans le repertoire c:\temp\, qui est 'démarré dans' c:\test\ et qui utilise ta DLL qui est dans c:\windows, tu veux quel répertoire ?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut
    En fait je cherche a recuperer le repertoire où existe ma dll. donc je cherche l'equivalent de exename pour une dll.
    Je crois que j ai trouvé la réponse dans la premiere duscussion de ce forum, on doit utiliser paramstr(0).
    Merci quand meme.

  4. #4
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    essai d'utiliser filesearch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedureTForm1.Button1Click(Sender:TObject);
     
    var
    FileToFind:string;
    begin
    FileToFind :=FileSearch(Edit1.Text,GetCurrentDir);
    ifFileToFind =''then
    ShowMessage('Impossible de trouver '+Edit1.Text +'.')
    else
    ShowMessage('Trouvé'+FileToFind +'.');
     
    end;
    enfin si j'ai bien compris
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    paramstr(0) va te retourner le chemin complet du .exe qui appèle ta dll.

    si tu veux obtenir le chemin de la dll tu dois procéder autrement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure EntryPointProc(Reason: Integer);
    var
      FileNameDLL: array[0..MAX_PATH] of Char;
    begin
      FillMemory( @FileNameDLL[0],MAX_PATH,0);
      GetModuleFileName( HInstance, FileNameDLL, MAX_PATH);
      // ici FileNameDLL = 'c:\winnt\system32\mydll.dll'
    end;
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Si tu veux avoir accès à l'application dans ta DLL, rien de plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure Machin(AppHandle: THandle; ...);stdcall;
    begin
      Application.Handle := AppHandle;
      //Maintenant, tu peux avoir accès à Application.ExeName
    end;
    Exemple d'appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Machin(Application.handle, ...);
    A noter que cette méthode supprime le second bouton qui correspond à la DLL dans la barre des tâches
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Pedro
    Salut
    Si tu veux avoir accès à l'application dans ta DLL, rien de plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure Machin(AppHandle: THandle; ...);stdcall;
    begin
      Application.Handle := AppHandle;
      //Maintenant, tu peux avoir accès à Application.ExeName
    end;
    Exemple d'appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Machin(Application.handle, ...);
    A noter que cette méthode supprime le second bouton qui correspond à la DLL dans la barre des tâches
    la procedure machin doit etre déclarée dans la DLL ou dans l'EXE?? si j'ai bien compris je dois la déclarer dans le exe et l'utiliser dans la dll.

  8. #8
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    La procédure Machin est évidemment dans la DLL Et l'appel est soit dans la DLL soit dans l'exe, ça ne pose pas de problème
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Comment récupérer le nom du fichier sans le chemin ?
    Par st0nky dans le forum Débuter
    Réponses: 3
    Dernier message: 08/12/2005, 11h01
  3. Réponses: 6
    Dernier message: 16/06/2005, 09h07
  4. Réponses: 6
    Dernier message: 27/05/2004, 10h41
  5. comment recuperer le nom des champs ?????
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 10h00

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