Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   problema con copyfile (https://www.clubdelphi.com/foros/showthread.php?t=3737)

cesarjbf 18-09-2003 11:07:27

problema con copyfile
 
Hola, ya lei varios hilos nuevos y viejos y llegue a la conclusion de que para copear un archivo de un directorio a otro se puede utilizar esto

procedure TForm1.Button1Click(Sender: TObject);
Var
f:TFileStream;
begin
f:=TFileStream.Create('c:\musica\001\depechemode.jpg',fmOpenRead or fmShareExclusive);
copyfile(pchar('c:\musica\001\depechemode.jpg'),pchar('c:\musica\006\001.jpg'),true);
f.free;
end;

el programa corre bien pero no copea nada,(delphi 5), GRACIAS

Investment 18-09-2003 11:37:40

Hola cesarjbf.
En realidad, te basta con una sola linea:

Código:

CopyFile(PChar('C:\Temp\Copia.txt'),PChar('C:\Temp\log\Copia.txt'),TRUE);
Prueba poniendo solo esto y veras como funciona

cesarjbf 18-09-2003 11:58:32

Muchas Gracias,


Funciono!!

cesarjbf 22-09-2003 09:40:37

El metodo funciono pero como hago para que reescriba un archivo que ya existe,
por ejemplo una foto, mismo nombre pero diferente imagen.

delphi.com.ar 22-09-2003 16:10:27

Como primero, te recomiendo que accedas a la ayuda antes que al foro, pues la solución la tienes al alcance de tu mano.
El tercer parámentro del CopyFile que tu estas pasando en true, significa: "Specifies how this operation is to proceed if a file of the same name as that specified by lpNewFileName already exists. If this parameter is TRUE and the new file already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds."
Digamos que si pasas ese parámetro como True, sobreescribirá el archivo en el caso de que exista.

Saludos!

corso73 03-01-2012 03:06:22

El método falla porque la cadena pasa con saltos de pagina. La recomendación es generar un código que limpie la cadena antes de pasarla si es que estan usando el CopyFile de forma dinámica, por ejemplo si obtienen el archivo de un Opendialog:

En lo particular utilice algo muy rustico para limpiar la cadena:

function Tfrm.DeleteLineBreaks(const S: string): string;
var
Source, SourceEnd: PChar;
begin
Source := Pointer(S) ;
SourceEnd := Source + Length(S) ;
while Source < SourceEnd do
begin
case Source^ of
#10: Source^ := #32;
#13: Source^ := #32;
end;
Inc(Source) ;
end;
Result := S;
end;

.... y la mando a llamar de la siguiente forma.

DeleteLineBreaks(ExtractFileName(edt_cer.Text));

y esta solucionado... no es nada de permisos ni nada por el estilo...

espero les sirva y si alguien le puede hacer una mejor por favor...


Saludos

Casimiro Notevi 03-01-2012 11:49:03

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Y recuerda:



Además has contestado a un mensaje de hace 9 años ;)


La franja horaria es GMT +2. Ahora son las 05:05:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi