Ver Mensaje Individual
  #1  
Antiguo 07-02-2024
javier14 javier14 is offline
Miembro
 
Registrado: ago 2023
Posts: 12
Reputación: 0
javier14 Va por buen camino
Copiar archivos Servidor-Cliente

Tengo un procedimiento para copiar archivos desde un servidor a un cliente. Los archivos se copian bien en mi carpeta de destino pero siempre me salta la excepción del ShowMessage con 'Invalid Pointer Operation'.
archivoOrigen, es una concatenación de rutas, ejemplo:
ruta1/archivo.exe;ruta2/archivo.sql...

¿ Cómo puedo cambiarlo ?

Código Delphi [-]
procedure TForm1.Traspaso(archivoOrigen, archivoDestino : String);
var
  serverMethods: TServerMethods1Client;
  stream: TStream;
  listaRutas: TStringList;
  i: Integer;
  rutaArchivo, nombreArchivo, rutaDestinoCompleta, ExistingFileName: String;
begin
  listaRutas := TStringList.Create;
  try
    listaRutas.StrictDelimiter := True;
    listaRutas.Delimiter := ';';
    listaRutas.DelimitedText := archivoOrigen;

    for i := 0 to listaRutas.Count - 1 do
    begin
      rutaArchivo := listaRutas[i];
      nombreArchivo := ExtractFileName(rutaArchivo);
      rutaDestinoCompleta := IncludeTrailingPathDelimiter(archivoDestino) + nombreArchivo;

      if FileExists(rutaDestinoCompleta) then
      begin
        if ExtractFileExt(nombreArchivo).ToLower = '.exe' then
        begin
          ExistingFileName := IncludeTrailingPathDelimiter(archivoDestino) +
            ChangeFileExt(nombreArchivo, FormatDateTime('dd-mm-yyyy-hhnnss', Now)) + ExtractFileExt(nombreArchivo);
          RenameFile(rutaDestinoCompleta, ExistingFileName);
        end;
      end;

      try
        serverMethods := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
        stream := serverMethods .DownloadFile(rutaArchivo);
        try
          with TFileStream.Create(rutaDestinoCompleta, fmCreate) do
          try
            CopyFrom(stream, 0);
          finally
            Free;
          end;
        finally
          FreeAndNil(stream);
          FreeAndNil(serverMethods);
        end;

        if ExtractFileExt(rutaDestinoCompleta) = '.sql' then
          ExecuteSQLFromFile(rutaDestinoCompleta, 'SS');
      except
        on E: Exception do
          ShowMessage('Error al copiar ' + nombreArchivo + ': ' + E.Message);
      end;
    end;
  finally
    FreeAndNil(listaRutas);
  end;
  Application.ProcessMessages;
end;
Responder Con Cita