Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2024
javier14 javier14 is offline
Miembro
 
Registrado: ago 2023
Posts: 12
Poder: 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
  #2  
Antiguo 07-02-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Por favor, revisa los foros donde colocas las preguntas.
Has publicado esta pregunta en el foro de "Trucos".
Revisa la Guía de estilo de los foros.

En cuando a la pregunta, entiendo que tienes un error, pero exactamente qué es lo que quieres cambiar?

NOTA: Muevo el hilo a otro foro.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 07-02-2024
javier14 javier14 is offline
Miembro
 
Registrado: ago 2023
Posts: 12
Poder: 0
javier14 Va por buen camino
Quiero que deje de saltarme el Invalid Pointer Operation por cada archivo que se copia del servidor al cliente. Gracias
Responder Con Cita
  #4  
Antiguo 07-02-2024
Delphi01 Delphi01 is offline
Miembro
 
Registrado: nov 2015
Ubicación: Barcelona,España
Posts: 68
Poder: 9
Delphi01 Va por buen camino
Cita:
Empezado por javier14 Ver Mensaje
Quiero que deje de saltarme el Invalid Pointer Operation por cada archivo que se copia del servidor al cliente. Gracias
El error "Invalid Pointer Operation" puede ocurrir por varias razones


1-Verificar la existencia de archivos antes de copiarlos: Antes de copiar un archivo, puedes verificar si existe en la ubicación de destino utilizando la función "FileExists".

2-Verificar la validez de los objetos antes de liberarlos: Asegúrate de que los objetos que estás utilizando, como "stream" y "serverMethods", sean válidos antes de liberar su memoria. Puedes verificar si un objeto es nulo antes de liberarlo utilizando la función "Assigned"

3-Manejar excepciones de manera más específica: En lugar de capturar todas las excepciones con "on E: Exception do", puedes capturar excepciones más específicas para manejarlas de manera adecuada. Esto te permitirá identificar y solucionar problemas específicos que puedan estar causando el error.

etc...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Traspaso Archivos Cliente/Servidor javier14 Varios 1 08-11-2023 15:23:49
copiar tablas que cambiar poco al cliente hibero Providers 1 25-06-2008 21:43:29
Cliente-Servidor en VPN CoCaInE Conexión con bases de datos 7 11-06-2006 05:57:17
Cliente Servidor .NET radaalvaro .NET 0 09-01-2006 04:21:42
archivos avi en aplicacion cliente servidor Choclito Firebird e Interbase 1 26-11-2004 09:23:39


La franja horaria es GMT +2. Ahora son las 14:49:18.


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
Copyright 1996-2007 Club Delphi