Bonjour,
voire:

Comment allez vous depuis le temps?
Bon voilà, je suis en train de faire un petit programme pour automatiser un certain nombre de taches et faire une interface visuelle un peu sympa.

Bon, je lance des programmes externes depuis mon interface (Debugview de sysinternals par exemple)

Alors si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ShellExecute(Handle,'open',Pchar(DbgView.exe),Pchar('/l c:\tutu.txt'), nil , SW_SHOW);

Tout se passe bien, DebugView se lance et log les messages de debug dans tutu.txt

Par contre , j'ai voulut paufiner pour pouvoir choisir le fichier log

J'ai donc fait ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
var
argument:Pchar;
log_file:string;
begin
if savedialog1.Execute then log_file:='/l '+savedialog1.FileName;
//jusqu'ici tout va bien disons que j'ai log_file:='/l c:\test.txt'
argument:=StrAlloc (length(log_file)+1); //j'alloue l'espace
StrPcopy(argument,log_file);//je copie ma string dans le Pchar
//ici argument a bien l'air de contenir '/l c:\test.txt'
ShellExecute(Handle,'open',Pchar(DbgView.exe),argument, nil , SW_SHOW);
//<--- Debugview ne se lance pas, cette ligne ne marche pas... si je mets argument en dur ca marche
StrDispose(argument);
Bon il ya aquelque chose qui m'echappe, je pensais avoir fait les choses bien mais on dirait bien que je mesuis trompé quelque part.

Par esprit de programmation statistique j'ai quand meme essayé Pchar(argument) et aussi @argument

J'avoue secher...
Merci de votre attention