Function Goto Batch ne marche pas avec ShellExecute

Greg_ory Messages postés 2 Date d'inscription mardi 23 décembre 2014 Statut Membre Dernière intervention 23 décembre 2014 - Modifié par Greg_ory le 23/12/2014 à 18:59
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016 - 26 déc. 2014 à 17:41
Bonsoir a tous,

Voila je viens de me rendre compte que la fonction Goto Batch ne marche pas avec se Code

function ConstructorBatch(Batch: TMemo): String;
const
Sub = '&&';
var
I: Integer;
Cmd: String;
begin
Result := '';
for I := 0 to Batch.Lines.Count - 1 do
begin
Cmd := Cmd + Batch.Lines.Strings[I] + Sub;
end;
Result := Copy(Cmd,0, Length(Cmd) -2);
end;

procedure TForm1.btn_ExecuterClick(Sender: TObject);
Var aCmdLine : PChar;
begin
aCmdLine := PChar(cmdSwitch + ConstructorBatch(Batch));
StatusBar1.SimpleText := aCmdLine;
Case cb_FenetreDos.Checked of
True :ShellExecute(Handle, nil, 'CMD', aCmdLine, nil, sw_ShowNormal);
False :ShellExecute(Handle, nil, 'CMD', aCmdLine, nil, sw_Hide);
end;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
CmdSwitch := CmdSwitchs[TRadioButton(Sender).tag] ;
if RadioButton2.Checked Then
With cb_FenetreDos do
Begin
Checked := True;
Enabled := False;
End
Else cb_FenetreDos.Enabled := True;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
RadioButton2.Checked := True;
end;


Exemple se code Batch (Inséré dans le (MEMO = 'Bach') (Probléme ":boucle")
@title << Batch >>
@set t=0
:boucle
cls
@color %t%
@echo ------------------
@echo ---- CADRE ------
@echo ------------------
echo %t%
@set /a t = t + 1
if %t%==99 goto fin
goto boucle
:fin
pause


Erreur de la console : la syntax du nom de fichier de repertoire ou de volume est incorrecte.

Alors j'ai tester se code batch directement dans un fichier *.bat est la marche

Auriez vous une idée doux pourrai venir le problème ?

Merci de votre réponse & Bonne fête de fin d'année

3 réponses

Greg_ory Messages postés 2 Date d'inscription mardi 23 décembre 2014 Statut Membre Dernière intervention 23 décembre 2014
23 déc. 2014 à 20:58
je vois pas ce qui cloche
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
Modifié par dubois77 le 25/12/2014 à 10:34
Salut
juste 2 petites modifications :

Initialiser la variable cmd à ''

Result := Copy(Cmd,0, Length(Cmd) -2);
le deuxième paramètre devrait être 1
0
fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
26 déc. 2014 à 17:41
Bonjour

le goto est utilisable que dans un script
ici vous générez une ligne de commande

cmd1&&cmd2&&cmd3&&cmd4

donc ici cmd va exécuter la commande cmd1
si il n'y a pas eu d'erreur il va exécuter cmd2 ....
un :label n'est pas une commande valide

sauf erreur il n'est pas possible via cette méthode de faire des boucle via goto

il faut dans le cas présent passer par la génération d'un fichier temporaire puis d'exécuter ce fichier
--
0
Rejoignez-nous