Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   valores diferentes en array (https://www.clubdelphi.com/foros/showthread.php?t=42531)

anubis 16-04-2007 22:29:59

valores diferentes en array
 
Bueno, yo sigo preguntando, creo que es simple pero me estoy liando.

necesito crear una array que va a contener valores booleanos, pero los indices son los numeros que yo quiera.
Seria asi mas o menos

haocupada[103]:=true;

porque las habitaciones no van seguidas, asi que no puedo usar el 1..61. Ademas quedaria inicializarlas a False todas por lo menos hasta que las vaya metiendo en un registro.

Si sabeis otra forma, porque quiza sea mas facil de otro modo.

como siempre muchas gracias

torito 16-04-2007 22:47:29

por que no usas una tabla???

seoane 16-04-2007 22:55:30

Vamos por partes, si por ejemplo el numero de habitacion mas bajo es el 100 y el mas alto el 900, que te impide declarara un array como este:
Código Delphi [-]
var
  haocupada: array[100..900] of Boolean;
Si el problema es que entre el 100 y el 900 hay números de habitación que no se usan, no te preocupes, simplemente no lo uses. Una variable de tipo boolean ocupa solo 4 bytes en memoria, así que un array de, por ejemplo, 1000 elementos solo ocupa 4 kb, una pequeñez para un ordenador actual. Cualquier otra alternativa, probablemente requerirá mas calculo y por lo tanto mas gasto de recursos. A veces lo simple es mejor.

En cuanto a los de poner todos los elementos a false, puedes usar algo como esto:
Código Delphi [-]
  FillChar(haocupada,Sizeof(haocupada),#0);

roman 16-04-2007 23:02:14

Cita:

Empezado por seoane
Una variable de tipo boolean ocupa solo 4 bytes en memoria

Para una variable con sólo dos posibles valores, 4 bytes se me antoja demasiado. Yo diría que es un sólo byte.

// Saludos

seoane 16-04-2007 23:05:17

Cita:

Empezado por roman
Para una variable con sólo dos posibles valores, 4 bytes se me antoja demasiado. Yo diría que es un sólo byte.

// Saludos

Pues es verdad, pensaba que la trataba como un integer, pero acabo de comprobarlo y estaba equivocado :o

roman 16-04-2007 23:08:46

Es esa manía tuya de pensar en C :p Porque un LongBool sí que ocupa 4 bytes. Eso sí, la "disminución" de tamaño, reafirma la respuesta que diste a anubis. :)

// Saludos

anubis 17-04-2007 09:47:39

Gracias, la cosa funciona.


La franja horaria es GMT +2. Ahora son las 05:39:42.

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