Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Copie de fichiers [ Archives / Système ] (natie_49)

mardi 17 mai 2005 à 16:59:44 | Copie de fichiers

natie_49

La fonction ci-dessous ne fonctionne pas correctement, aidez moi svp!!
Merci davance.

function Copiefichier(srctmp, dsttmp : TRes) : Boolean; export;
var
  Copybuffer     : Pointer;
  BytesCopied    : Longint;
  Source, Dest   : Integer;
  D_Dir          : TRes;
  FBufferSize    : Integer;

begin
  // affectation du résultat par défaut
  result:=True;
  // si le fichier source existe et la destination non nulle
  if (fileexists(srctmp)) and (dsttmp<>'') then
  begin
    // Si le répertoire de destinantion n'existe pas on le crée
    D_dir := ExtractFilePath(dsttmp);
    if not DirectoryExists(D_Dir) then ForceDirectories(D_Dir);
    // On alloue la mémoire au buffer de copie de fichier
    GetMem(Copybuffer, FBufferSize);
    try
      // On ouvre le fichier
      source := FileOpen(srctmp, fmShareDenyNone);
      if Source<0 then begin result:=false;end;
      try
        // Création du fichier de destination
        Dest := FileCreate(dsttmp);
        if Dest<0 then begin result:=false;end;
        try
          // On copie tant que l'on a encore quelque chose à copier
          repeat
            BytesCopied := FileRead(Source, Copybuffer^, FBufferSize);
            if BytesCopied>0 then
            begin
              // Ecriture du Buffer
              if not (FileWrite(Dest, Copybuffer^, BytesCopied)>0) then
              begin result:=false;end;
            end;
          until BytesCopied<FBufferSize;
          FileSetDate(Dest,FileGetDate(Source));
        finally
          // Fermeture du fichier destination
          FileClose(Dest);
        end;
      finally
        // Fermeture du fichier source
        FileClose(Source);
      end;
    finally
      // Libération de la mémoire allouée au Buffer
      freemem(Copybuffer, FBufferSize);
  end;
end;
end;


mercredi 18 mai 2005 à 00:03:42 | Re : Prog Delphi

Delphiprog

Administrateur CodeS-SourceS
La prochaine fois, mets un titre plus explicite que "Pb Delphi". 

    // On alloue la mémoire au buffer de copie de fichier
    GetMem(Copybuffer, FBufferSize);

Euh...quelle quantité de mémoire alloues-tu ?


Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
banner.gif<

mercredi 18 mai 2005 à 09:49:30 | Re : Copie de fichiers

DRJEROME

Delphiprog a raison...

sinon tu as aussi la fonction copyfile

DrJerome

mercredi 18 mai 2005 à 10:54:04 | Re : Copie de fichiers

natie_49

je suis en stage et je débute sur delphi donc je ne sais pas combien de mémoire allouer.

jeudi 19 mai 2005 à 00:35:24 | Re : Copie de fichiers

WhiteHippo

Membre Club
Pour la copie de fichiers, il existe déjà une question forum traitant de ce sujet (et un code associé) :
http://www.delphifr.com/forum.v2.aspx?ID=427067

Cordialement.

jeudi 19 mai 2005 à 09:12:24 | Re : Copie de fichiers

natie_49

Réponse acceptée !

function Copiefichier(srctmp, dsttmp : TRes) : Boolean; export;

var
  Copybuffer     : Pointer;
  BytesCopied    : Longint;
  Source, Dest   : Integer;
  D_Dir          : TRes;
  FBufferSize    : word;
  
begin
  FBufferSize := 1024;
  // affectation du résultat par défaut
  result:=False;
  // si le fichier source existe et la destination non nulle
  if (fileexists(srctmp)) and (dsttmp<>'') then
  begin
    // Si le répertoire de destinantion n'existe pas on le crée
    D_dir := ExtractFilePath(dsttmp);
    if not DirectoryExists(D_Dir) then ForceDirectories(D_Dir);
    // On alloue la mémoire au buffer de copie de fichier
    GetMem(Copybuffer, FBufferSize);
    try
      // On ouvre le fichier
      Source := FileOpen(srctmp, fmShareDenyNone);
      if Source<0 then begin result:=false;end;
      try
        // Création du fichier de destination
        Dest := FileCreate(dsttmp);
        if Dest<0 then begin result:=false;end;
        try
          // On copie tant que l'on a encore quelque chose à copier
          repeat
            BytesCopied := FileRead(Source, Copybuffer^, FBufferSize);
            if BytesCopied>0 then
            begin
              // Ecriture du Buffer
              if not (FileWrite(Dest, Copybuffer^, BytesCopied)>0) then
              begin result:=false;end;
            end;
          until BytesCopied<FBufferSize;
          FileSetDate(Dest,FileGetDate(Source));
          result:=true;
        finally
          // Fermeture du fichier destination
          FileClose(Dest);
        end;
      finally
        // Fermeture du fichier source
        FileClose(Source);
      end;
    finally
      // Libération de la mémoire allouée au Buffer
      freemem(Copybuffer, FBufferSize);
  end;
end;
end;




Cette discussion est classé dans : fichier, end, source, dest, copybuffer


Répondre à ce message

Sujets en rapport avec ce message

restructurer un fichier source [ par djam18 ] Salutje recherche un algorithme qui permettrait d'afficher une instruction par ligne d'un fichier source.Je m'explique :)j'ai un fichier source ecrit StringGrid et Fichier text pour lire [ par ahmed12 ] oubadjSalut tout le mande Je veux savoir comment j' ouvrir le contenue d'un fichier texte dans un TstringGrid Ling par ling. Comme avec le memo , j'a Lecture de fichier [ par trollnumber1 ] TrollBonjours ,mon probleme est de lire le fichier que j'ai créé voici la procedure d'enregistrement que j'ai fait mais je ne sais pas comment faire p Extraire des tags HTML [ par BinOff ] Voilà, je commence avec un fichier HTML ouvert en tant que source dans un memo1.Je souhaiterais extraire les noms des images incluses dans le source H limite StringGrid? [ par jlmcom ] Bonjour,1. Est-ce que quelqu?un connaît la limite de capacité d?un StringGrid ?J?ai voulu charger dans ce composant un fichier de plus de 1 Mo et me s Problème avec BlockRead/BlockWrite [ par broidsy ] Bonjour, J'ai un problème avec BlockRead/BlockWrite : L'objectif est de créer un petit programme qui gère des enregistrements d'élèves, de matière Enregistrer et ouvrir "détails" [ par darky93 ] J’ai Réussit à trouver un programme dans lequel il y avait Enregistrer et Ouvrir  mais pour une StringGrid. Je l’ai bidouillé  et j’ai "regroupé" mes Rassemblement de fichier et sécurité [ par Don0Choa ] Bonjour, je suis en train de faire un programme qui rassemble tous les fuchiers et dossiers que l'on veut en un seul. Ce fichier (Source.alb) contient MIDI [ par Nicolas___ ] Voila , hier j'ai telechargé un logicile excellent TS-AudioToMIDI disponible sur www.Telecharger.com le but étant ,pour ceux qui ne l'avais pas Comment savoir si un Node XML existe [ par fjohnny ] Bonjour,Voilà sur ma version de delphi (7) le composant TXMLDocument n'existe pas. N'ayant rien touvé sur le net, je suis en train de développer un co


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,20 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.