Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ordinal Type Required (https://www.clubdelphi.com/foros/showthread.php?t=49959)

Cecil 05-11-2007 00:55:12

Ordinal Type Required
 
Hola a todos, queria exponeros un problema que tengo:
De repente, no se porque, cuando necesito pasar como parámetro un array sea del tipo que sea, el compilador me lanza este error:

[DCC Error] Prueba.pas(181): E2001 Ordinal type required

Os pego la línea donde da el error:

Código Delphi [-]
 if DsAux.State in [dsEdit] then

Nunca me habia pasado antes, es mas esto es un código que hice hace varias semanas... pero ahora falla :(

Agradeceria vuestra ayuda. Un saludo y mil gracias.

dec 05-11-2007 01:03:56

Hola,

Creo que hay que aclarar algunas cosas. El código que muestras parece "bien formado", empero, tú mismo dices que el problema ocurre:

Cita:

(...) cuando necesito pasar como parámetro un array sea del tipo que sea (...)
Pero, en el código que muestras no se está tratando de hacer eso. Lo que creo que ocurre es que la línea de código que has puesto es la que se "resalta" en el editor, pero, el error sucede una línea antes... por lo menos.

Así pues, insisto, el código que muestras parece correcto, en principio, y falta por ver cómo haces...

Cita:

(...) cuando necesito pasar como parámetro un array sea del tipo que sea (...)

Cecil 05-11-2007 01:29:20

Ya lo he solucionado, ha sido asi:

Código Delphi [-]
if DsAux.State in [TDataSetState(dsEdit)] then

Es decir, a las líneas que paso como parámetro, necesitan el tipo. Un saludo y mil gracias!

dec 05-11-2007 01:36:18

Hola,

Pero,... lo que haces arriba es "promocionar" ("castear"...) la variable (o lo que sea) "dsEdit" para forzar (de cara al compilador) que sea tenida en cuenta como del tipo "TDataSetState". Ahora bien, ¿esto será correcto siempre? En fin... tampoco quiero yo ahora liar demasiado el asunto; tú que tienes acceso a toda la información es de suponer que sabrás lo que haces. :)

Al González 05-11-2007 03:02:23

Cuidado con ese molde de tipo ("type cast") Cecil. Si sin él, el compilador te arrojaba el error mencionado, seguramente es porque no se trataba de la constante dsEdit que todos conocemos, sino alguna otra cosa que fue nombrada con el mismo identificador.

De ser así, las consecuencias pueden ser inesperadas.

Al González. :)

Cecil 05-11-2007 03:06:14

Gracias por vuestras advertencias, la verdad esque lo he usado a la ligera si, pero necesito que no de fallo :D

DsAux se trata de un TpIBDataSet de las IBPlus, ¿sabeis si ese dsEdit se diferencia mucho del dsEdit TDataSetState, o si tendre muchos problemas?.
Un saludo y gracias.

Al González 05-11-2007 03:28:24

Creo que no tiene que ver el componente data set. Hagamos una cosa:

Haz clic con el botón derecho sobre ese identificador "dsEdit" y elige la opción "Find Declaration". Dinos qué unidad .pas abrió el editor y muéstranos la línea de código a donde te llevó.

También dinos por favor la versión de Delphi que estás utilizando.

Gracias.

Al.

Cecil 05-11-2007 03:39:33

Errr... me vais a querer matar cuando os lo cuente...
El error estaba en que tenia un DataSource llamado "DsEdit", y claro el error venia de esa forma... y bueno, me ha pasado en varios sitios :eek:

Una vez mas este foro me ha salvado la vida, gracias por vuestra ayuda! Un saludo y buenas noches!

Al González 05-11-2007 04:14:30

De nada. Me alegro por haberte servido mi consejo, y qué decir de David que hizo muy bien en cuestionar la falsa solución por la que habías optado inicialmente.

Saludos.

Al.


La franja horaria es GMT +2. Ahora son las 21:37:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi