Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Combobox error Duplicate Case Label (https://www.clubdelphi.com/foros/showthread.php?t=74586)

Chichero 28-06-2011 04:06:24

Combobox error Duplicate Case Label
 
Tengo que realizar un programa que para diferentes ciudades que coloque en una combobox muestre dos variables (Tbse y Tbhe):
Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Var Tbse, Tbhe: real;
City:integer;
//Selectiva Multiple Principal para fijacion de condiciones exteriores e interiores
City:=ComboBox1.ItemIndex;
CASE City OF
//a
0 Or 1 Or 3 Or 15 Or 17 Or 28: Begin
Tbse:= 95;
Tbhe:=78;
Label4.Caption:= FloatToStr(Tbse);
Label6.Caption:= FloatToStr(Tbhe);
Label9.Caption:= FloatToStr(Tbsi);
Label119.Caption:= FloatToStr(HR);
end;
//b
2 Or 16: Begin
Tbse:= 95;
Tbhe:=76;
Label4.Caption:= FloatToStr(Tbse);
Label6.Caption:= FloatToStr(Tbhe);
end;
//c
4 Or 25: Begin
Tbse:= 96;
Tbhe:=80;
Label4.Caption:= FloatToStr(Tbse);
Label6.Caption:= FloatToStr(Tbhe);
end;
//d
5: Begin
Tbse:= 95;
Tbhe:=73;
Label4.Caption:= FloatToStr(Tbse);
Label6.Caption:= FloatToStr(Tbhe);
end;
//e
6 Or 9 Or 13 Or 18 or 19 or 20: Begin (ACA ME DICE ERROR DE "Duplicate case label")
Tbse:= 95;
Tbhe:=81;
Label4.Caption:= FloatToStr(Tbse);
Label6.Caption:= FloatToStr(Tbhe);
end;
.
.
.
Es como si ya hubiese definido alguno de los numeros del caso //e pero en realidad no fue así, entonces no corre el programa

Al González 28-06-2011 06:56:25

Hola Chichero.

1. Sé bienvenido a este foro. :)

2. El pasado fin de semana tuve la fortuna de ver Hermano, la película de Marcel Rasquin. Que gran trabajo, me gustó mucho.

3. Cuando publiques código, hay que darle formato para que no pierda el sangrado, es decir, los espacios en blanco que van al comienzo de cada línea. Esto es muy sencillo con el botón "Resaltar sintaxis Delphi".

4. El error que mencionas te aparece porque:

0 Or 1 Or 3 Or 15 Or 17 Or 28 = 31

y

6 Or 9 Or 13 Or 18 or 19 or 20 = 31 también.

El operador Or aplicado a números enteros se utiliza para "mezclar" los bits de tales enteros y no tiene relación alguna con la instrucción Case.

Lo que debes hacer es separar los valores usando comas:

0, 1, 3, 15, 17, 28

El error "Duplicate case label" aparece cuando se repite alguno de los valores, así que debes cuidar que eso no suceda. Como lo tenías se repetía el valor 31 (aunque no lo escribieras literalmente).

Espero haber podido ayudarte.

Saludos.

Al González. :)

Chichero 28-06-2011 17:34:22

Gracias man!
 
1. Gracias
2. Sí yo también la ví y es muy buena, al parecer fue una historia real y es triste pero así son las cosas en los barrios de Caracas.
3. Ahh ok si ya ví ese botón lo tomaré en cuenta.
4. Gracias man ahora sí no me da error en esos códigos, sólo al final que es el último caso termina en
Código Delphi [-]
end;
//fin de selectiva multiple
end;
end.    (en éste me dice [Error] Unit1.pas(435): ';' expected but '.' found)
Disculpen la novatada, sé que debe ser un detallito pero soy algo nuevo en Delphi, sólo ví hace años un curso de introducción a Delphi.

Chichero 28-06-2011 17:39:51

yayayaya
 
jajaa era que faltaba un end; no sé por qué jejejej gracias manoo! demasiado bueno este foro


La franja horaria es GMT +2. Ahora son las 20:42:40.

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