benalioua1975
Messages postés93Date d'inscriptionsamedi 31 décembre 2005StatutMembreDernière intervention26 juin 2013
-
24 mars 2007 à 15:18
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 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 ???
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);
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 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 !
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 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.
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 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+
gebu34
Messages postés118Date d'inscriptionsamedi 9 décembre 2006StatutMembreDernière intervention17 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+