Ver Mensaje Individual
  #3  
Antiguo 28-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
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