Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Encuentra los 5 (o mas) errores... (https://www.clubdelphi.com/foros/showthread.php?t=25199)

papulo 15-09-2005 13:21:26

Encuentra los 5 (o mas) errores...
 
Primero un C&P

Código Delphi [-]
 procedure TFiller.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
 case Key of
 VK_F5 :
          begin
             case iStatus of
             0 : exit;
             1 : RadioButton2_Init;
             else Lanzar_Consulta;
          end;
 VK_ESCAPE :
          begin
             case iStatus of
             0,1 : Filler.Close;
             10,50 :
                   begin
                      iStatus := 1;Lanzar_Consulta;;
                   end
                   else
                   begin
                      iStatus := (iStatus - 1);Lanzar_Consulta;
                   end;
          end
 VK_F2 :
          begin
             if iStatus=1 then
             begin
             iStatus := 10;
             Lanzar_Consulta;
             end;
          end
 VK_F3 :
          begin
             if iStatus=1 then
             begin
             iStatus := 50;
             Lanzar_Consulta;
             end;
          end
 VK_RETURN :
          begin
             case iStatus of
             11,52: exit;
             10,50..51 : begin
                          iStatus := (iStatus+1);
                          Lanzar_Consulta;
                          end;
          end
 end;

Despues, la pregunta:

¿Que falla exactamente? Me jugaria un testiculo (hipoteticamente hablando) a que es de sintaxis, pero la idea es correcta.

Ya direis...

delphi.com.ar 15-09-2005 13:44:17

Cita:

Empezado por papulo
¿Que falla exactamente? Me jugaria un testiculo

¿Qué es lo que sucede?... ¿No compila?... ¿Produce un error?.. ¿No hace lo que querés?... ¿A cuánto se cotiza el testículo en el mercado ilegal de órganos? :D

roman 15-09-2005 15:19:23

Es realmente evidente. Y también lo será para tí en cuanto te pongas a revisar la sintaxis de la sentencia case (un error por cada uno).

// Saludos

rastafarey 15-09-2005 15:40:59

Resp
 
A todos los cases mas internos le falta un end; Aunque no entiendo la pregunta.

Creo que eso no hay preguntarlo ya qu ele compilador te dice que tienes ese error.

Osea no entiendo por que la pregunta.

papulo 15-09-2005 16:38:23

A ver, por partes.

Ante todo gracias por responder.

1º EL haberme levantado a las 6 de la mañana para presentar unas practicas antes del trabajo, me han dejado bastante grogui para el resto del dia, maxime con la paliza fisica que me di ayer entrenando.

2º La empanada ha derivado en que, por ejemplo, iniciara todos los Statements con
Código Delphi [-]
begin...end
Lo cual ya lo he solucionado.

3º Estoy mirando la ayuda de "case statements" a ver que saco en claro de ello. Esta fallandome lo siguiente:
Código Delphi [-]
    VK_F2 : if iStatus=1 then
               begin
                 iStatus := 10;
                 Lanzar_Consulta;
               end;

Donde el compilador me dice "[Error] mainform.pas(521): For loop control variable must be simple local variable"


4º A modo de pequeña bio, comentaros, que el tema de la programacion lo llevaba a nivel 0, pero 0 de verdad. En la entrevista de trabajo, cuando me lo pregunto, le dije que en la facultad, yo siempre me ponia con alguno de modulo, yo diseñaba en el papel y las ideas de los algoritmos, para que luego el colega implementara a nivel de programacion. De DELPHI (y cualquier otro lenguaje) 0 de 0. Aun asi, todos los dias me estoy machacando con este lenguaje, y la programacion en general, para poder mejorar lo mas rapido posible. Doy las gracias porque me resulta divertido, ameno y excitante el trabajo que tengo.
Y aunque no hace ni 2 meses que estoy trabajando aqui, me busco la vida como puedo. La ayuda general me "ayuda", si no googleo o bien recurro a vuestra experiencia, que por aqui veo que sobra, pero mi intencion es aprender, aprender y aprender.
Pero el hecho de que las postee aqui, no implica que me quede de brazos cruzado esperando a que las solventeis y yo me quede tan pancho. En cuanto escriba esta respuesta, me ire a la ayuda, a ver que significa lo que me dice el compilador, a ver si lo entiendo (aunque por suerte, ingles si que se) y a ver si en ultima instancia, lo resuelvo antes de que vosotros me deis una solucion.

PD: Aun asi, me encanta leeros y ver que hay gente activa por aqui. A ver cuando puedo ayudar yo, pero necesitare tiempo...

Hasta otra!!!;)

ContraVeneno 15-09-2005 16:58:07

Entiendo la intensión de Roman, la verdad es que los errores son bastante claros, pero bueno. De cierta manera hubiera respondido algo así como "bastante claros los errores, el compilador te los dice".

En fin, dadas las circunstancias daré mi respuesta: las VK no creo que las puedas usar como condición de un case, de ahí el error que mencionas. Segundo, para cada case incias con begin y end pero te falta el punto y coma.

Para la próxima vez, revisa muy bien tu código y la ayuda que delphi te proporciona. Estoy seguro que muchas tus dudas las podrás resolver si presionas F1 en Delphi, si eso no te lo soluciona, pues una búsqueda en la red o en los foros estoy seguro que te ayuda. Y si de plano sigues con la duda, entonces puedes colocar un nuevo hilo con tu pregunta específica.

Supongo que ya leíste la guia de estilo del foro.

Un saludo

papulo 15-09-2005 17:19:11

Gracias por los consejos.

Si que lei la guia de estilo del foro, realmente son muy utiles para facilitar la comunicacion dentro de los mismo.

La intencion de Roman la entendi desde el principio, y si tengo dudas, primero ojeo la ayuda "F1", pero todavia estoy demasiado verde, como para que me resulte todo lo util que en realidad sera. Estoy aprendiendo la base, demasiados conceptos cada dia, los que se repiten del dia anterior, el grado de empanamiento que pueda tener (hoy alcanzaba cotas maximas).

Conforme mas soltura coja, mas extrapole el codigo y mejor lo comprenda, mejor podre aprovecharme de la ayuda de los demas (hablo de usar la busqueda avanzada, no de gorronear conocimientos), pero por ahora necesito, al menos cuando no logro comprender la situacion, que me lo den mascadito, como a un niño pequeño, para comprenderlo bien y poderlo asimilar correctamente. Luego ya me encargare yo de ir aumentando esa base y profundizando en las posibilidades que me brinden mi habilidad y mi perseverancia.

Y disculpad mi ausencia de tildes, pero este teclado esta cascado y no me deja escribirlas. Cuando escriba desde casa ya veran que si va bien.

ContraVeneno 15-09-2005 17:24:04

Luego nos cuentas si resolviste lo del "for loop control". Y si no, pues ya sabes que aquí abrá gente que este dispuesta.

papulo 15-09-2005 17:57:28

¡¡RESUELTO!! Aunque la ayuda me ha servido lo mismo que si estuviera en Arameo, lo que he visto es que comenzaba el statement con un condicional, y va ser que eso no le gustaba, asi que con este sencillo retoque
Código Delphi [-]
 VK_F2 : begin
            if iStatus=1 then
            begin
              iStatus := 10;
              Lanzar_Consulta;
            end;
         end;

Ya lo he hechado andar, ya que si me permite usar el if dentro del begin.

roman 15-09-2005 17:59:54

A ver, a ver. Discúlpame por favor papulo. Realmente no era mi intención ser irónico. Simplemente pensé que al ver la ayuda te darías cuenta de cuál era el error. Me percato de que no lo dije en términos correctos y para mitigar un poco la mala impresión te explico aquí lo que sucede:

Cada etiqueta del case puede omitir begin..end si hay una sóla sentencia pero si hay más de una debes ponerlos:

Código Delphi [-]
case ... of

  etiqueta:
  begin
    ...
  end;

end;

Pero cada case debe siempre terminar con un end.

Así que, cuando tú pones

Código Delphi [-]
case Key of
 VK_F5 :
          begin
             case iStatus of
             0 : exit;
             1 : RadioButton2_Init;
             else Lanzar_Consulta;
          end // <-- este end corresponde al case interior

          // falta el end de la etiqueta VK_F5
 VK_ESCAPE :

   ...

El end que aparentemente corresponde a la etiqueta (por laindentación dada) realmente corresponde al case anidado y por tanto falta un end.

Como esto sucede en las cinco etiquetas del case externo por ello son cinco errores.

// Saludos y disculpas

papulo 16-09-2005 09:10:05

Gracias Roman. Para nada me tome a mal tu comentario, solamente supuse que creias que mi nivel era mayor, y que en la ayuda lo veria de forma evidente, pero aun estoy aprendiendo, y de una forma bastante autodidacta, que me hace sufrir como un burro.

Gracias tambien a todos por la ayuda y las aclaraciones.:)


La franja horaria es GMT +2. Ahora son las 05:29: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