Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2015
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 305
Poder: 23
elrayo76 Va camino a la fama
No es exactamente lo que necesito pero tendría que ver si me sirve... Lo que quiero hacer es poder pasar a la función solamente uno de los datos de cualquiera de todos los enumerados que pueda tener.

Si a alguien se le ocurre o conoce alguna otra forma de hacer lo que necesito se los agradecería.

Saludos,
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #2  
Antiguo 14-06-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elrayo76,

Cita:
Empezado por elrayo76
...Lo que quiero hacer es poder pasar a la función solamente uno de los datos de cualquiera de todos los enumerados que pueda tener...


Revisa este código:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
   Sum1, Sum2, Sum3, Sum4 : Integer;
   SumMsg : String;

begin

   Sum1 := SumEnumValue([A1]);

   Sum2 := SumEnumValue([C5]);

   Sum3 := SumEnumValue([B3,E5]);

   Sum4 := SumEnumValue([]);

   SumMsg := 'Sum1 = %d ' + #13#10 + 'Sum2 = %d' + #13#10 + 'Sum3 = %d' + #13#10 + 'Sum4 = %d';

   MessageDlg(Format(SumMsg,[Sum1, Sum2, Sum3, Sum4]),mtInformation,[mbOK],0);

end;
El código anterior en Delphi 7 sobre Windows 7 Professional x32, es continuación del propuesto en el Msg #3 y Muestra como enviar 0, 1 ó N valores de tipo Enumerado por medio de un Arreglo Dinámico de tipo Variant, como se muestra en la siguiente imagen:



Pregunto:

1- ¿Que versión de Windows (XP, 7, 8, 8.1, 10, Otra) y de cuantos bits (x32, x64) usa tu aplicación?

2- ¿Que versión de Delphi usa tu aplicación?.

Espero sea útil

Nelson.
Responder Con Cita
  #3  
Antiguo 14-06-2015
elrayo76 elrayo76 is offline
Miembro
 
Registrado: ene 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 305
Poder: 23
elrayo76 Va camino a la fama
1- ¿Que versión de Windows (XP, 7, 8, 8.1, 10, Otra) y de cuantos bits (x32, x64) usa tu aplicación?

Windows 7 de 64 bits. Pero creo que esto no viene al acaso.

2- ¿Que versión de Delphi usa tu aplicación?.

En estoss momento estoy usando Delphi XE8, pero bien podría haber sido con XE6.

Igualmente creo que no conoces si existe alguna forma para pasar un parámetro de una función como un tipo enumerado genéricos (por genérico me refiero a que no le tenga que decir a la función que el parametro es TEnumA o TEnumB, sino que sea algo que le pueda pasar cualquier enumerado).

Igualmente gracias por la respuesta. Ya veré si lo resuelvo como tu me dices o buscaré alguna otra forma de hacerlo.

Saludos,
El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno
Responder Con Cita
  #4  
Antiguo 14-06-2015
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola elrayo76.

Hay una duda importante en el aire: ¿la función debe poder distinguir cuál es el tipo del valor pasado como parámetro? ¿Podrías darnos una idea de qué hará la función con él?

A diferencia de C, Delphi no permite que los tipos enumerados sean directamente compatibles con los tipos entero, pero los considera a ambos como ordinales. Eso los hace fácilmente intercambiables, por ejemplo, usando la función Ord:
Código Delphi [-]
// Llamamos a la función con un valor del tipo enumerado TOperation
FuncionMisteriosa (Ord (opRemove));

// Llamamos a la función con un valor del tipo enumerado TTypeKind
FuncionMisteriosa (Ord (tkClass));
La desventaja de esto es que la función debe declarar su parámetro de tipo entero, con lo cual se pierde la valiosa información sobre cuál era el tipo del valor pasado.

En caso de que la función deba discernir el tipo del valor, una alternativa viable es que la función sea un método con parámetro de tipo, también conocido como método genérico:
Código Delphi [-]
Procedure MetodoMisterioso <T> (Value :T);
En este caso la desventaja es que Delphi no cuenta por ahora con un tipo de restricción enumerated para los parámetros de tipo, por lo que el compilador admitiría cualquier tipo de dato para T.

NOTA: El enlace dado por ecfisa puede servirte como introducción al uso de genéricos en Delphi, fabulosa característica disponible desde la versión 2009.

Un cordial saludo.

Al González.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Imprimir reporte enumerado no desde 1 zugazua2001 Impresión 1 20-04-2009 11:42:02
procedimiento de asignación genérico gushynet OOP 23 09-09-2008 10:50:15
Enumerado Guillermo80 Varios 8 09-03-2008 18:06:57
enumerado bosterito Varios 3 15-01-2007 20:42:53
reporte generico piyugo Impresión 8 07-05-2004 18:20:03


La franja horaria es GMT +2. Ahora son las 05:45:20.


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
Copyright 1996-2007 Club Delphi