![]() |
¿Cómo sortear el error Constant expression required?
Buenas a todos. Me está surgiendo un problema que seguro está resuelto pero no soy capaz de encontrar la solución. Necesito definir un vector en base al número de filas que devuelve la ejecución de este query:
Supongamos que la salida es esta: Votos Partido 6380 2 4897 3 3018 17 2413 22 Y quiero definir un vector con cuatro índices. Si una vez ejecutado el query trato de definirlo así: Código:
int Vector[Query->RecordCount]; Cita:
Cita:
|
Hola a todos,
Igual digo una tontería, pero, ¿no será que "Query->RecordCount" no es una constante y de ahí el error? Tiene que haber otra forma de declarar el vector (¿hablamos de un array verdad?) y de establecer su tamaño, tal vez usando la función "SetLength". |
Hace algún tiempo que no tabajo en C o C++ o C Builder así que estoy algo oxidado y puede ser que diga una burrada. A mi modo de ver tienes dos opciones: o defines un array lo suficientemente grande para contenedor todos tus resultados, por ejemplo, si sabes que máximo vas a tener 20 partidos y por tanto 20 resultados:
y haces tu bucles hasta el numero real de resultados, por ejemplo:
O, la segunda opción, trabajar con arreglos (vectores) dinámicos. Esta técnica requiere del uso de punteros y del uso de la funciones malloc y dealloc para manipular el tamaño del vector, pero hasta aquí llega mi memoria y no me atrevo a aportar más. Suerte. |
Sin entrar en los detalles de tu base de datos, para definir un array en C++ tienes dos formas:
1 Estática: Código PHP:
2 Dinámica: Código PHP:
La diferencia es que mientras la reserva de memoria la hace el compilador en la pila en la forma estática, en la dinámica la haces tú. Logicamente el compilador no puede reservar memoria con un valor no constante que variará en tiempo de ejecución. Saludos. |
Hola.
Tál como te han comentado los compañeros C++ no permite usar una variable para definir el tamaño de un arreglo estático. La biblioteca estándar de C++ te brinda otra opción (vector): Código PHP:
|
Cita:
|
vector no es del C estándar sino C++ estándar. Se trata de un Template, una clase plantilla.
Saludos. |
La franja horaria es GMT +2. Ahora son las 03:24:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi