PDA

Ver la Versión Completa : FileStream pa copiar todo un directorio o carpeta


Oxa78
23-03-2007, 00:09:39
Saludos :

Hace un tiempo preguntaba como copiar archivos desde el servidor hacia las pc clientes. Bueno busque y probe varios procedimientos como :



Function CopiaCarpeta(Origen,Destino : String) : LongInt;
var
F : TShFileOpStruct;
sOrigen, sDestino : String;
Begin
Result := 0;
sOrigen := Origen + #0;
sDestino := Destino + #0;

with F do
begin
Wnd := Application.Handle;
wFunc := FO_COPY;
pFrom := @sOrigen[1];
pTo := @sDestino[1];
fFlags := FOF_NOERRORUI or FOF_NOCONFIRMATION ;
end;

Result := ShFileOperation(F);
End;

procedure Copiar(From, Hacia: String);
var
Operation: _ShFileOpStruct;
begin
Operation.wFunc := fo_copy;
Operation.pFrom := PChar(ExcludeTrailingPathDelimiter(From));
Operation.pTo := PChar(ExcludeTrailingPathDelimiter(Hacia));
ShFileOperation(Operation);
end;


Funciona bien para copair archivos desde el servidor hacia los clientes, pero si quiero copiar archivos del cliente hacia el servidor, simplmente no funciona.
A pesar de q tengo todos los permisos y todo.

Entonces investigue las Indy especificamente el ejemplo Image Server q copia archivos, de este modo realice pruebas y resultaron positivas.

Pero ahora estoy en otro problema, deseo copiar todo un directorio o carpeta q contenga digamos 100 archivos, pero al tratar de decirle al stream q quiero todo el directorio no acepta.

Ejemplo para copiar solo un archivo

fStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\File.exe',fmOpenRead + fmShareDenyNone);



Trate de copair toda la carpeta con esto :


fStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\Carpeta1\*.*',fmOpenRead + fmShareDenyNone);


Alguien puede ayudarme por favor

Muchas Gracias