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));
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);
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.