Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2007
angelp4492 angelp4492 is offline
Miembro
 
Registrado: dic 2007
Posts: 99
Poder: 0
angelp4492 cantidad desconocida en este momento
Problema con funcion Para Archivos

Hola como estan?
Pues veran tengo un problema con esta funcion que no puedo echarla a andar.

Código Delphi [-]
if copy(date,1,5)='Upload' then
   begin
        memo1.Lines.Add(date);
   SizeOfFile:=StrToInt(copy(date,7,pos('|',date)-7));
      //  memo1.Lines.Add(date);
   delete(date,1,pos('|',date));
   // memo1.Lines.Add(date);
   // memo1.Lines.Add(intTostr(SizeOfFile));
   UploadTo:=copy(date,1,Pos('|',date)-1);
    memo1.Lines.Add(uploadto);
   delete(date,1,pos('|',date));
   ServerState:=sSRecieveingFile;
   UFS:=TFileStream.Create(UploadTo,fmCreate or fmOpenWrite);
     end;
    case ServerState of sSRecieveingFile :
    begin
    try
    begin
    ufs.Write(date[1],length(date));
    Dec(SizeOfFile,length(date));
   if SizeOfFile = 0 then
    begin
    ServerState:=sSIdle;
    socket.SendText('Resultado'+'Fichero Subido..');
    UFs.free;
    sleep(1500);
    Socket.SendText('TomaFicheros'+ListFiles(ExtractFileDir(UploadTo)));
   end;
    end;
    except begin
    ufs.Free;
   Socket.SendText('Resultado'+'Fallo al Subir Fichero');
     end;
 end;
end;
 end;

La he estado testeando y el problema que tengo esq depues de chequear el if del principio y ver que la palabra recibida en el socket no es upload, el salto siguiente es hacia el case y hay esta el problema porq deberia de no hacer nada y pasar a otra cosa. Si me salta al case y no he mandado nin gun fichero pues entonces me da error de lectura..

Alguna idea de como podria solucionar esto.Gracias

Última edición por jachguate fecha: 28-12-2007 a las 03:03:43. Razón: Corregir uso de etiqueta delphi.
Responder Con Cita
  #2  
Antiguo 28-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

He editado tu post original para añadir la etiqueta [delphi]. Verás que la presentación del código publicado está mucho mejor ahora.

Para ver cómo funciona la etiqueta, te recomiendo presionar el botón de "editar" tu mensaje original.

hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 28-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
con respecto de tu duda original, he cambiado la indentación para que resulte evidente el inicio fín de los bloques

Código Delphi [-]
if copy(date,1,5)='Upload' then
begin
  memo1.Lines.Add(date);
  SizeOfFile:=StrToInt(copy(date,7,pos('|',date)-7));
  //  memo1.Lines.Add(date);
  delete(date,1,pos('|',date));
  // memo1.Lines.Add(date);
  // memo1.Lines.Add(intTostr(SizeOfFile));
  UploadTo:=copy(date,1,Pos('|',date)-1);
  memo1.Lines.Add(uploadto);
  delete(date,1,pos('|',date));
  ServerState:=sSRecieveingFile;
  UFS:=TFileStream.Create(UploadTo,fmCreate or fmOpenWrite);
end;
case ServerState of
  sSRecieveingFile :
    begin
      try
        begin
          ufs.Write(date[1],length(date));
          Dec(SizeOfFile,length(date));
          if SizeOfFile = 0 then
          begin
            ServerState:=sSIdle;
            socket.SendText('Resultado'+'Fichero Subido..');
            UFs.free;
            sleep(1500);
            Socket.SendText('TomaFicheros'+ListFiles(ExtractFileDir(UploadTo)));
          end;
        end;
      except
        begin
          ufs.Free;
          Socket.SendText('Resultado'+'Fallo al Subir Fichero');
       end;
      end;
   end;
end;

Cómo podes ver, el case está fuera del begin/end que delimitan lo que se hará al cumplirse la condición del if.

He quitado algunos pares de begin/end que estaban de mas, y dejado el case dentro del bloque que se ejecuta al cumplirse la condición del if, que es lo que supongo que querés.

Código Delphi [-]
if copy(date,1,5)='Upload' then
begin
  memo1.Lines.Add(date);
  SizeOfFile:=StrToInt(copy(date,7,pos('|',date)-7));
  delete(date,1,pos('|',date));
  UploadTo:=copy(date,1,Pos('|',date)-1);
  memo1.Lines.Add(uploadto);
  delete(date,1,pos('|',date));
  ServerState:=sSRecieveingFile;
  UFS:=TFileStream.Create(UploadTo,fmCreate or fmOpenWrite);
  case ServerState of
    sSRecieveingFile :
      try
        ufs.Write(date[1],length(date));
        Dec(SizeOfFile,length(date));
        if SizeOfFile = 0 then
        begin
          ServerState:=sSIdle;
          socket.SendText('Resultado'+'Fichero Subido..');
          UFs.free;
          sleep(1500);
          Socket.SendText('TomaFicheros'+ListFiles(ExtractFileDir(UploadTo)));
        end;
      except
        ufs.Free;
        Socket.SendText('Resultado'+'Fallo al Subir Fichero');
      end;
  end;
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 28-12-2007
angelp4492 angelp4492 is offline
Miembro
 
Registrado: dic 2007
Posts: 99
Poder: 0
angelp4492 cantidad desconocida en este momento
Pues he cambiado el codigo por el que has puesto y no funciona, me manda el archivo pero esta vacio.
Responder Con Cita
  #5  
Antiguo 28-12-2007
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
Si no me equivoco, la condición del if nunca se va a cumplir

Código Delphi [-]
if copy(date,1,5)='Upload' then
porque la cadena que se extrae de date es de longitud 5 y se compara contra una de longitud 6.
__________________
eLcHiCoTeMiDo - Rompecorazones profesional
Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos?
Salva a un nylon, usa prendas de piel de foca
Responder Con Cita
  #6  
Antiguo 28-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por rcarrillom Ver Mensaje
Si no me equivoco, la condición del if nunca se va a cumplir

Código Delphi [-]
if copy(date,1,5)='Upload' then
porque la cadena que se extrae de date es de longitud 5 y se compara contra una de longitud 6.
Claro!! ese y otros errores no consitían en tu pregunta original. Recordá que la responsabilidad de que esto funcione es tuya, no nuestra.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 28-12-2007
angelp4492 angelp4492 is offline
Miembro
 
Registrado: dic 2007
Posts: 99
Poder: 0
angelp4492 cantidad desconocida en este momento
Tienes toda la razon es verdad q la longitud de la palabra es 5, porq en el codigo original que tengo probando tengo puesto subir en vez de upload, y como ya no se que puede pasar me puedes decir un sitio donde vea algún ejemplo de transferencia de archivos via socket, asi la cambio q ya me tiene arto.
Responder Con Cita
  #8  
Antiguo 28-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Si estas dispuesto a cambiar toda la rutina. creo recordar que las INDY traian un demo de transferencia de archivos. No estoy seguro y ahora no tengo tiempo de verificar por mi mismo.

Los demos de las indy están en la página del proyecto indy

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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
Problema con la funcion Seek de un TADOTable DanForever Conexión con bases de datos 2 04-05-2006 13:29:00
Problema para descargar archivos con la funcion GetInetFile Moises22 Internet 1 05-12-2005 14:15:35
Problema con la funcion mail JulioGO PHP 2 26-09-2005 11:24:15
problema para devolver 2 valores en una funcion tiagor64 OOP 4 06-05-2005 15:38:59
problema al llamar una función sgarrido Varios 3 27-07-2004 01:14:33


La franja horaria es GMT +2. Ahora son las 08:45:27.


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