Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Asignacion de Valor

Tengo una declaración de tipo de esta manera:

Código:
  TipoIdentificador = (_0, _110, _22);
He declarado ya una variable de este tipo asi:

Código:
   el_identificador : TipoIdentificador;
Pero ahora como le asigno el valor a mi nueva variable?, la asigne así pero merca un error de incompatibilidad de tipos:
Código:
  el_identificador := '1';
Como debo asignarle cualquiera de los 3 valores?

Saludos.
Responder Con Cita
  #2  
Antiguo 20-12-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Son incompatibles porque '1' es un valor de tipo Char, mientras que el_identificador es del tipo enumerado TipoIdentificador. Delphi no admite asignaciones directas entre ambos tipos de datos.

A el_identificador sólo podrás asignarle alguna de las tres constantes que definiste dentro en el tipo TipoIdentificador, es decir, _0, _110 o _22.

Saludos.

Última edición por Al González fecha: 20-12-2011 a las 20:28:36.
Responder Con Cita
  #3  
Antiguo 20-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Es tál cuál como claramente te lo expuso Al. Y si quisieras ampliar un poco la funcionalidad podés utilizar conjutos (set), un ejemplo:

Código Delphi [-]
...
type
  TDiasDeSemana  = (Lunes, Martes, Miercoles, Jueves, Viernes, Sabado, Domingo);
  TDias = set of TDiasDeSemana;

procedure Revisar(Dia: TDiasDeSemana);
var
  FinDeSemana: TDias;
begin
  FinDeSemana:= [Sabado, Domingo];
  if Dia in FinDeSemana then
    ShowMessage('¡ Por fin !')
  else
    ShowMessage('Ya me lo temía...');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Revisar(Lunes);
  Revisar(Sabado);
  ...
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 20-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
entonces mis asignaciones deben ser asi:

Código:
el_identificador := _0;
o bien:

Código:
el_identificador := _110;
o bien:

Código:
el_identificador := _22;
La definición del tipo TipoIdentificador = (_0, _110, _22); me la dió el WSDL Importer al generar las clases que se requieren para un Cliente Webservice, es por eso que me surge esa duda. Lo mismo me pasa con otro tipo declarado así:
Código:
  { "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"[GblSmpl] }
  UnidadMedida = (
      _1, 
      _2, 
      _3, 
      _4, 
      _5, 
      _6, 
      _7, 
      _8, 
      _9, 
      _10, 
      _11, 
      _12, 
      _13, 
      _14, 
      _15, 
      _16, 
      _17, 
      _18, 
      _19, 
      _20, 
      _21
);
Tengo que asignar valor a una variable Clave_de_unidad declarada asi:

clave_de_unidad:UnidadMedida;

Ahora mi duda es, esos valores ( _1, _2, _3, _4, ..., _19, _20, _21) a que se refieren, especificamente el signo '_' antes de cada valor que yo supuse era un entero?
Responder Con Cita
  #5  
Antiguo 20-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Ahora mi duda es, esos valores ( _1, _2, _3, _4, ..., _19, _20, _21) a que se refieren, especificamente el signo '_' antes de cada valor que yo supuse era un entero?
Hola ruedabeat2003.

Los tipos enumerativos son conjuntos de valores ordinales constantes, no predefinidos y se representan por identificadores. Al decir no predefinidos me refiero a que son creados por el usuario:
Código Delphi [-]
type
  TMeses = (enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre);
  TAutosDeportivos = (Lamborghini,Ferrari,Porsche,Bugatti);
  ...
La calificación de ordinales, es por que poseen un órden (redundantemente hablando), que va del 0 al último elemento:
Código Delphi [-]
  ShowMessage(IntToStr(Ord(_22))); // mostrará 2 (en tu ejemplo)

Repitiendo lo dicho más arriba por Al si declaras
Código Delphi [-]
type
   TipoIdentificador = (_0, _110, _22);

el_identificador es de tipo TipoIdentificador, no es de ningún tipo predefinido en Delphi. También podría haber sido declarada como: (a0, a110, a22),(a_0, a_110, a_22),(a,b,c), etc. Siempre respetando la sintáxis exigida por Delphi para los identificadores. (no són válidos por ejemplo: *a, #3, -5,...).

A una variable de tipo TipoIdentificador declarada como en tu primer mensaje, solo se le podran asignar los valores: _0, _110 y _22.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 20-12-2011 a las 23:48:59. Razón: correción ortográfica
Responder Con Cita
  #6  
Antiguo 20-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Ok

Bien, bien, ya me queda claro, pudieron haber declarado TAnimal=(gato, perro, cerdo,tigre) y a una variable de tipo Tanimal solo le podria signar los valores: gato, perro, cerdo o tigre. OK

Gracias por la ayuda.
Responder Con Cita
  #7  
Antiguo 20-12-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Cita:
Empezado por ruedabeat2003 Ver Mensaje
Bien, bien, ya me queda claro, pudieron haber declarado TAnimal=(gato, perro, cerdo,tigre) y a una variable de tipo Tanimal solo le podria signar los valores: gato, perro, cerdo o tigre. OK
Así es, y aunque signifiquen lo mismo que cerdo, no podrías asignarle cochino, marrano, puerco o guarro , a no ser que declares a estos como identificadores cuyo tipo sea TAnimal. Una manera de hacerlo sería incluirlos como "sinónimos" de cerdo dentro del tipo enumerado:
Código Delphi [-]
Type
  TAnimal = (gato, perro, cerdo, cochino = cerdo, marrano = cerdo,
    puerco = cerdo, guarro = cerdo, tigre);

procedure TForm1.Button1Click(Sender: TObject);
Var
  A :TAnimal;
begin
  A := gato;
  ShowMessage (IntToStr (Byte (A)));  // 0
  A := tigre;
  ShowMessage (IntToStr (Byte (A)));  // 3
  A := cerdo;

  If (A = cochino) And (A = marrano) And (A = puerco) And (A = guarro) Then
    ShowMessage (IntToStr (Byte (A)));  // 2
end;

Un cochino abrazo.

Al González.
Responder Con Cita
  #8  
Antiguo 21-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
clases, tipos y conjuntos.

La verdad es que me estaba peleando con la definicion de Clases, tipos y conjuntos, ahora me ha quedado claro, y sobre lo que preguntaba era sobre un tipo definido de acuerdo a una tipo enumerado, mientras que yo seguia metido con las clases, ya me ha quedado claro y hoy he avanzado mucho en mi desarrollo.

Gracias por la ayuda. Saludos.
Responder Con Cita
Respuesta



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
Asignacion a un Variant gersonmaba OOP 12 13-07-2011 04:44:40
lio con una asignación ioco OOP 6 13-03-2010 12:33:18
Asignacion de campos jdangosto OOP 1 05-08-2005 10:41:11
Asignación IP juanchi Internet 1 24-09-2003 19:07:05
asignacion de un valor a un dbedit elpezfuma OOP 4 09-07-2003 17:30:43


La franja horaria es GMT +2. Ahora son las 22:53:13.


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