PDA

Ver la Versión Completa : Encuentra los 5 (o mas) errores...


papulo
15-09-2005, 13:21:26
Primero un C&P


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
¿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
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 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:

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 (http://www.clubdelphi.com/foros/guiaestilo.php).

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

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:


case ... of

etiqueta:
begin
...
end;

end;


Pero cada case debe siempre terminar con un end.

Así que, cuando tú pones


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