PDA

Ver la Versión Completa : Combobox error Duplicate Case Label


Chichero
28-06-2011, 04:06:24
Tengo que realizar un programa que para diferentes ciudades que coloque en una combobox muestre dos variables (Tbse y Tbhe):

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 (http://es.wikipedia.org/wiki/Hermano_(pel%C3%ADcula)), 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
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
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
jajaa era que faltaba un end; no sé por qué jejejej gracias manoo! demasiado bueno este foro