Ver Mensaje Individual
  #9  
Antiguo 03-02-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
He hecho este pequeño programita ejemplo, para ver si puedes buscar el error.
Tiene un panel alineado alTop con un boton y un Memo para guardar un Log de todos los pasos.
En el evento del botón se llama al procedimiento que copia.
Si alguna función devuelve un error, te lo muestra en el memo.
Yo he probado con
  • IP que no existe
  • Nombre de usuario y contraseña incorrectos
  • Carpeta que no existe dentro de la ip
Todos estos me dan algún tipo de error.

Ya nos contarás...

Código Delphi [-]
unit UFMMainCopia;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TFMMainCopia = class(TForm)
    PNLMain: TPanel;  {Panel alineado alTop}
    BCopiar: TButton;
    MLog: TMemo;      {Memo alineado alClient}
    procedure BCopiarClick(Sender: TObject);
  private
    procedure prcCopiARed(vOrigen, vDestino, vUser, vPassword :string);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FMMainCopia: TFMMainCopia;

implementation

{$R *.dfm}

procedure TFMMainCopia.prcCopiARed(vOrigen, vDestino, vUser, vPassword :string);
var
   NetResource: TNetResource;
   vRuta : PChar;
   ErrCode : integer;
   ErrCode2 : LongBool;
begin
   MLog.Clear;
   {*****************************************}
   { IMPORTANTE: vRuta NO debe terminar en \ }
   {*****************************************}
   vRuta := PChar('\\192.168.152.127\Compartida');
   MLog.Lines.Add('vRuta := PChar(''\\192.168.152.127\Compartida'')');

   NetResource.dwType := RESOURCETYPE_DISK;
   MLog.Lines.Add('NetResource.dwType := RESOURCETYPE_DISK');

   //Letra con la cual sera mapeado el recurso
   NetResource.lpLocalName := 'X:';
   MLog.Lines.Add('NetResource.lpLocalName := ''X:''');

   //Nombre del recurso
   NetResource.lpRemoteName := vRuta;
   MLog.Lines.Add('NetResource.lpRemoteName := vRuta');

   NetResource.lpProvider := '';
   MLog.Lines.Add('NetResource.lpProvider := ''''');

   if (vUser = '') then
   begin
      ErrCode := WNetAddConnection2(NetResource, nil, nil, CONNECT_UPDATE_PROFILE);
      MLog.Lines.Add('WNetAddConnection2(NetResource, nil, nil, CONNECT_UPDATE_PROFILE)');
   end
   else
   begin
      ErrCode := WNetAddConnection2(NetResource, PChar(vPassword), PChar(vUser), CONNECT_UPDATE_PROFILE);
      MLog.Lines.Add('WNetAddConnection2(NetResource, PChar(' + vPassword + '), PChar(' + vUser + '), CONNECT_UPDATE_PROFILE)');
   end;

   MLog.Lines.Add('ErrCode: '+IntToStr(ErrCode));
   if (ErrCode = ERROR_ACCESS_DENIED             ) then MLog.Lines.Add('ERROR_ACCESS_DENIED') else
   if (ErrCode = ERROR_ALREADY_ASSIGNED           ) then MLog.Lines.Add('ERROR_ALREADY_ASSIGNED') else
   if (ErrCode = ERROR_BAD_DEV_TYPE              ) then MLog.Lines.Add('ERROR_BAD_DEV_TYPE') else
   if (ErrCode = ERROR_BAD_DEVICE           ) then MLog.Lines.Add('ERROR_BAD_DEVICE') else
   if (ErrCode = ERROR_BAD_NET_NAME           ) then MLog.Lines.Add('ERROR_BAD_NET_NAME') else
   if (ErrCode = ERROR_BAD_PROFILE           ) then MLog.Lines.Add('ERROR_BAD_PROFILE') else
   if (ErrCode = ERROR_BAD_PROVIDER           ) then MLog.Lines.Add('ERROR_BAD_PROVIDER') else
   if (ErrCode = ERROR_BUSY                   ) then MLog.Lines.Add('ERROR_BUSY') else
   if (ErrCode = ERROR_CANCELLED           ) then MLog.Lines.Add('ERROR_CANCELLED') else
   if (ErrCode = ERROR_CANNOT_OPEN_PROFILE       ) then MLog.Lines.Add('ERROR_CANNOT_OPEN_PROFILE') else
   if (ErrCode = ERROR_DEVICE_ALREADY_REMEMBERED ) then MLog.Lines.Add('ERROR_DEVICE_ALREADY_REMEMBERED') else
   if (ErrCode = ERROR_EXTENDED_ERROR            ) then MLog.Lines.Add('ERROR_EXTENDED_ERROR') else
   if (ErrCode = ERROR_INVALID_PASSWORD          ) then MLog.Lines.Add('ERROR_INVALID_PASSWORD') else
   if (ErrCode = ERROR_NO_NET_OR_BAD_PATH        ) then MLog.Lines.Add('ERROR_NO_NET_OR_BAD_PATH') else
   if (ErrCode = ERROR_NO_NETWORK           ) then MLog.Lines.Add('ERROR_NO_NETWORK') else
   MLog.Lines.Add('DESCONOCIDO');

   ErrCode2 := CopyFile(PChar(vOrigen), PChar('X:\destino.txt'), True);
   MLog.Lines.Add('CopyFile(PChar(' + vOrigen + '), PChar(' + vDestino + '), True)');
   if (ErrCode2) then
      MLog.Lines.Add('ErrCode: True')
   else
      MLog.Lines.Add('ErrCode: False');

   ErrCode := WNetCancelConnection2('X:', CONNECT_UPDATE_PROFILE, True);
   MLog.Lines.Add('WNetCancelConnection2(''X:'', CONNECT_UPDATE_PROFILE, True)''');
   MLog.Lines.Add('ErrCode: '+IntToStr(ErrCode));
end;

procedure TFMMainCopia.BCopiarClick(Sender: TObject);
begin
   prcCopiARed('C:\Origen.txt', 'X:\Destino.txt', 'Usuario', 'password');
end;

end.
Responder Con Cita