Function Goto Batch ne marche pas avec ShellExecute

Signaler
Messages postés
2
Date d'inscription
mardi 23 décembre 2014
Statut
Membre
Dernière intervention
23 décembre 2014
-
Messages postés
251
Date d'inscription
dimanche 7 décembre 2003
Statut
Membre
Dernière intervention
11 novembre 2016
-
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

Messages postés
2
Date d'inscription
mardi 23 décembre 2014
Statut
Membre
Dernière intervention
23 décembre 2014

je vois pas ce qui cloche
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
13
Salut
juste 2 petites modifications :

Initialiser la variable cmd à ''

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

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
--