Commande MSDOS

benalioua1975 Messages postés 93 Date d'inscription samedi 31 décembre 2005 Statut Membre Dernière intervention 26 juin 2013 - 24 mars 2007 à 15:18
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009 - 3 avril 2007 à 07:03
bonjour, je voudrai executer une commande MSDOS
sous delphi pour copier un fichier d'un repertoire a un autre,
avez vous une solution ???

merci

13 réponses

cptpingu Messages postés 3840 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 23 août 2024 126
24 mars 2007 à 15:44
shellexecute ou winexec
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009
24 mars 2007 à 17:47
Salut,
Pourquoi des commandes DOS puisque les commandes de fichiers existent sur Delphi ?
A+
0
Utilisateur anonyme
25 mars 2007 à 00:38
Salut

Tout a fait d'accord avec Gebu34

Si on fait une recherche rapide on obtient ca de développez.com

Comment copier un fichier ?
[haut]
auteur : Laurent Dardenne
Vous pouvez utiliser la fonction ShFileOperation qui permet, entre autres l'opération de copie de fichiers. En cas d'erreur le système affichera une fenêtre de dialogue indiquant la cause probable de l'erreur. Les flags FOF_xxx influencent l'opération, consulter l'aide en ligne pour plus de détails.

function CopyFile(Source, Destination: String ) : boolean;
var
fos : TSHFileOpStruct;
begin
FillChar(fos, SizeOf(fos),0);
with fos do
begin
wFunc := FO_COPY;
pFrom := PChar(Source+#0);
pTo := PChar(Destination+#0);
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT;
end;
result :(0 ShFileOperation(fos));
end;

Si toutefois vous souhaitez gérer les possibles erreurs lors de la copie , vous pouvez utiliser la fonction CopyFile.
CopyFile(NomDeFichierExistant,NouveauNomDeFichier : String; EchecSiExiste: BOOL): BOOL;
Le paramètre "EchecSiExiste" indique comment procéder si un fichier portant le même nom que le paramètre "NouveauNomDeFichier" existe déjà.

* Si ce paramètre vaut TRUE et qu'un fichier existe déjà, la fonction échoue et renvoie FALSE.
* Si ce paramètre vaut FALSE et qu'un fichier existe déjà, le fichier existant est écrasé, la fonction réussit et renvoie TRUE.

Result := CopyFile(PChar(NomDeFichierExistant), PChar(NouveauNomDeFichier), False);
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
25 mars 2007 à 20:54
Les commandes DOS reserves les pour l'interpreteur de commande ou du batch. Quand on developpe on utilise les fonctions du compilo, c'est plus propre.

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benalioua1975 Messages postés 93 Date d'inscription samedi 31 décembre 2005 Statut Membre Dernière intervention 26 juin 2013
26 mars 2007 à 09:18
rien ne marche de vos reponse je voudrai seulement dupliquer un fichier c tous

exemple                copy a.txt b.txt
0
Micro_and_Macro Messages postés 43 Date d'inscription dimanche 26 mars 2006 Statut Membre Dernière intervention 1 août 2009
26 mars 2007 à 19:24
Api win 32--> CopyFile, c'est plus propre quand même !

 

<center> 

</center>
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
27 mars 2007 à 13:37
"rien ne marche de vos réponse"
Elle est bien bonne, celle-là...

Dis-nous ce qui ne "marche pas" :
- Tu ne sais pas te servir de CopyFile ?
- Tu ne sais pas déclarer ShellApi dans les uses ?
- Tu ne connais pas l'utilisation de PChar() ?
- Autre ?

Sois plus précis dans ta question si tu veux qu'on t'aide !
0
benalioua1975 Messages postés 93 Date d'inscription samedi 31 décembre 2005 Statut Membre Dernière intervention 26 juin 2013
27 mars 2007 à 20:11
la fonction copyfile existe en delphi mais qu'on je l'execute rien ne se passe

j'ai fait copyfile ("a.txt"," b.txt",variable boolean), ya pas un exemple bien detaillée
0
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
27 mars 2007 à 20:15
Il me semble qu'il faut caster.

CopyFile( PChar('a.txt'), PChar('b.txt'), False );

Bon Code.

<!-- blocPrincipal -->
 /\_/\
( o.o ) ~ ElGuevel ~
 > ^ <
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
28 mars 2007 à 09:01
et ou sont tes fichier? dans le même dossier que l'application? et la valeur de retour ? et que dit GetLastError ?
(et elguevel a raison, il faut caster)

bonne recherche,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
benalioua1975 Messages postés 93 Date d'inscription samedi 31 décembre 2005 Statut Membre Dernière intervention 26 juin 2013
28 mars 2007 à 09:11
toujour, rien

donnez moi un exemple svp, et envoyer le moi sur benalioua1975@yahoo.fr

merci
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009
2 avril 2007 à 20:13
Salut,
Avec un peu de recherche tu peus trouver.....
Dans l'aide voir "routines gestion de fichiers" c'est le début de la programmation
Je te passe quand même une proc que tu peus passer en proc générale.....
cette proc utilise les fonctions BlockRead et BlockWrite...

procedure CopieFichier(NomFicSource:string;NomFicCible:String);
{cette procédure copie le fichier NomFicSource vers NomFicCible}
var
 SRC, CBL: file;
 NR, NW: Integer;
 Buf: array[1..2048] of Char;
begin
 if AnsiUpperCase(NomFicSource)<>AnsiUpperCase(NomFicCible) then
 {si on ne cherche pas à copier sur lui même}
  begin
   AssignFile(SRC, NomFicSource); { ouverture du fichier source    }
   Reset(SRC, 1);              { Taille d'enregistrement = 1    }
   AssignFile(CBL, NomFicCible);  { Ouverture du fichier de sortie }
   Rewrite(CBL, 1);              { Taille d'enregistrement = 1    }
   repeat
    BlockRead(SRC, Buf, SizeOf(Buf), NR);
    BlockWrite(CBL, Buf, NR, NW);
   until (NR = 0) or (NW <> NR);
   CloseFile(SRC);
   CloseFile(CBL);
  end;
end;
Les fichiers sont passés en chemin complet
A+
0
gebu34 Messages postés 118 Date d'inscription samedi 9 décembre 2006 Statut Membre Dernière intervention 17 novembre 2009
3 avril 2007 à 07:03
Salut,
Tu as raison elguevel, on peut utiliser l'API de windows....
Quand j'ai créé cette proc, je crois que c'était sous Delphi 1....
Et puis ça fait travailler les méninges.....
Le "tout maché" n'existe pas sous delphi, c'est ce qui rend ce langage passionnant...Alors avant de poser des questions, cherchons....
Allez A+
0
Rejoignez-nous