Probleme shellexecute

Résolu
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008 - 26 juin 2005 à 16:30
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 - 27 juin 2005 à 21:10

3 réponses

Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008
26 juin 2005 à 16:53
Je suis fier de moi j'ai resolu mon probleme tout seul comme un grand! :) :)

J'ai créer deux fonctions:

function StringLinker(str:string):string;
var temp:string;
i:integer;
begin
temp:= str;
for i: =0 to length(str)-1 do begin
if str[i]= ' ' then
temp[i]:='_';
end ;
result: =temp;
end;


function StringUnlinker(str:string):string;
var temp:string;
i:integer;
begin
temp:= str;
for i: =0 to length(str)-1 do begin
if str[i]= '_' then
temp[i]:=' ';
end ;
result: =temp;
end;

Donc j'utilise la premiere fonction pour "lier" la chaine a l'appele de mon programme, et j'appele la seconde pour mettre des espace au lancement de ma deuxieme appli...
3
Sat83 Messages postés 166 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 13 octobre 2008
26 juin 2005 à 16:33
(LA MEME CHOSE EN PLUS LISIBLE)

Hello...

Voila j'ai un probleme: je souhaiterais lancer une application B a partir d'une application A... Je souhaiterais passé une chaine de caractère (contenant le chemin d'un repertoire) en parametre....

J'utilise dans l'application A:
ShellExecute(handle, 'open', 'AppliB.exe', Pchar(chemin) , nil, SW_SHOWDEFAULT);

où chemin est de type string.

Et à la création de mon Application B j'ai: procedure

TForm1.FormCreate(Sender: TObject);
begin
if paramstr(1)<> '' then begin
chemin:=paramstr(1);
end;
end;

Le probleme c'est que ca ne marche pas!

Apres pas mal de recherche, j'ai finallement trouvé que le probleme viens du faite que le chemin transmis est du type 'C:\Documents and Settings\...' et que l'Application B recoit 'C:\Documents' (donc jusqu'au premier espace dans le chemin)

Comment pourais-je faire pour ne plus avoir ce probleme?

Merci d'avance...
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
27 juin 2005 à 21:10
Ou alors:

<hr size= "2" width="100%">ShellExecute(Handle, 'Open', 'AppliB.exe', PChar(Format('"%s"',[Chemin])) , nil , SW_SHOWDEFAULT);
<hr size ="2" width="100%"> Qui
est même préférable à ta façon si jamais un dossier contient un
caractère _ (underscore) : l'appli B le retransformera en espace et tu
ne récupérera plus le nom original du dossier.



Exemple:

C:\\My Docs\Doc_perso\

sera codé

C:\\My_Docs\Doc_perso\

et ensuite décodé

C:\\My Docs\Doc perso\

Et tu ne récuperera pas ton chemin initial.



De plus, pas besoin de s'embetter de fonction de décodage: un
simple ParamStr(1) suffit pour récupérer le otut, même avec les espaces.



@ ++

Florent


Si tu ne te plantes pas ......
tu ne poussera jamais
0
Rejoignez-nous