![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Tratamiento de constantes
Buenas.
Como respuesta de un webService obtengo un parámetro Estado que es de tipo EstadoTipo y que se compone de un array de posibles valores. Código:
EstadoTipo = (NO_LEIDA, ACEPTADA, RECHAZADA, EXPIRADA); Puedes ver la imagen del IDE ![]() Alguien puede explicarme como trabajar con estos valores. Gracias. |
#2
|
||||
|
||||
Hola
Esa definicion es de un tipo enumerado no una constante. Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar. Antonio Machado |
#3
|
||||
|
||||
Los valores son los que pone en la imagen: 0, 1, 2, 3
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Gracias por la respuesta.
Y como hago para obtener el valor que me viene? Por que si hago: Código:
memo.Lines.Add('Estado '+result.Metadatos[i].Estado); [dcc32 Error] Unit1.pas(115): E2010 Incompatible types: 'string' and 'EstadoTipo' Saludos. |
#5
|
||||
|
||||
Hola
Pues en delphi 7 lo que haria seria declarar un array.
Y lo usaria asi: Bueno no lo he probado asi que tal vez halla que hacerle unos ajustes. Pero creo que se entiende la idea. Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar. Antonio Machado |
#6
|
||||
|
||||
Este valor lo recibo como respuesta a una petición SOAP y se carga en una TRemotable con esta definición:
Código:
MetadatosTipo = class(TRemotable) private FticketID: ticketID; FMensajeID: IDGlobalTipo; FEstado: EstadoTipo; FEmisor: TipoNIF; FNombreEmisor: NombreEmisorTipo; FNombreEmisor_Specified: boolean; FTitular: TipoNIF; FNotificado: TipoNIF; FTipoMensajeria: TipoMensajeTipo; FActoNotificado: ActoNotificadoTipo; FActoNotificado_Specified: boolean; FAsunto: AsuntoTipo; FCuerpo: CuerpoTipo; FCuerpo_Specified: boolean; FDetalles: DetallesMensajeTipo; FDetalles_Specified: boolean; FNombreFicheroAdjunto: NombreFicheroAdjuntoTipo; FNombreFicheroAdjunto_Specified: boolean; FFerchaPuestaDisposicion: TXSDateTime; FEventoRecogida: InformacionEventoTipo; FEventoRecogida_Specified: boolean; FDatosRecogida: DatosRecogidaTipo; FDatosRecogida_Specified: boolean; procedure SetNombreEmisor(Index: Integer; const ANombreEmisorTipo: NombreEmisorTipo); function NombreEmisor_Specified(Index: Integer): boolean; procedure SetActoNotificado(Index: Integer; const AActoNotificadoTipo: ActoNotificadoTipo); function ActoNotificado_Specified(Index: Integer): boolean; procedure SetCuerpo(Index: Integer; const ACuerpoTipo: CuerpoTipo); function Cuerpo_Specified(Index: Integer): boolean; procedure SetDetalles(Index: Integer; const ADetallesMensajeTipo: DetallesMensajeTipo); function Detalles_Specified(Index: Integer): boolean; procedure SetNombreFicheroAdjunto(Index: Integer; const ANombreFicheroAdjuntoTipo: NombreFicheroAdjuntoTipo); function NombreFicheroAdjunto_Specified(Index: Integer): boolean; procedure SetEventoRecogida(Index: Integer; const AInformacionEventoTipo: InformacionEventoTipo); function EventoRecogida_Specified(Index: Integer): boolean; procedure SetDatosRecogida(Index: Integer; const ADatosRecogidaTipo: DatosRecogidaTipo); function DatosRecogida_Specified(Index: Integer): boolean; public destructor Destroy; override; published property ticketID: ticketID Index (IS_ATTR) read FticketID write FticketID; property MensajeID: IDGlobalTipo read FMensajeID write FMensajeID; property Estado: EstadoTipo read FEstado write FEstado; property Emisor: TipoNIF read FEmisor write FEmisor; property NombreEmisor: NombreEmisorTipo Index (IS_OPTN) read FNombreEmisor write SetNombreEmisor stored NombreEmisor_Specified; property Titular: TipoNIF read FTitular write FTitular; property Notificado: TipoNIF read FNotificado write FNotificado; property TipoMensajeria: TipoMensajeTipo read FTipoMensajeria write FTipoMensajeria; property ActoNotificado: ActoNotificadoTipo Index (IS_OPTN) read FActoNotificado write SetActoNotificado stored ActoNotificado_Specified; property Asunto: AsuntoTipo read FAsunto write FAsunto; property Cuerpo: CuerpoTipo Index (IS_OPTN) read FCuerpo write SetCuerpo stored Cuerpo_Specified; property Detalles: DetallesMensajeTipo Index (IS_OPTN) read FDetalles write SetDetalles stored Detalles_Specified; property NombreFicheroAdjunto: NombreFicheroAdjuntoTipo Index (IS_OPTN) read FNombreFicheroAdjunto write SetNombreFicheroAdjunto stored NombreFicheroAdjunto_Specified; property FerchaPuestaDisposicion: TXSDateTime read FFerchaPuestaDisposicion write FFerchaPuestaDisposicion; property EventoRecogida: InformacionEventoTipo Index (IS_OPTN) read FEventoRecogida write SetEventoRecogida stored EventoRecogida_Specified; property DatosRecogida: DatosRecogidaTipo Index (IS_OPTN) read FDatosRecogida write SetDatosRecogida stored DatosRecogida_Specified; end; Código:
EstadoTipo = (NO_LEIDA, ACEPTADA, RECHAZADA, EXPIRADA); Como ves en la imagen del otro post me ofrece los posibles valores de EstadoTipo. Y si intento Código:
memo.Lines.Add('Estado '+result.Metadatos[i].Estado); De hecho, si lo vuelco en un xml obtengo su valor: Código:
<tns:RespuestaConsulta xmlns:ape="urn:correos.es:ape.sne.datos.1.0" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:tns="urn:correos.es:ape.sne.ws.accesobuzon.1.0"> <tns:Paginacion> <tns:pagina>1</tns:pagina> <tns:totalPaginas>2</tns:totalPaginas> <tns:numeroElementos>30</tns:numeroElementos> </tns:Paginacion> <tns:Metadatos tns:ticketID="148620"> <tns:MensajeID>1485796663920-1-0</tns:MensajeID> <tns:Estado>NO_LEIDA</tns:Estado> <tns:Emisor>28972577Y</tns:Emisor> <tns:NombreEmisor>Servicio de Notificaciones Electrónicas SNE</tns:NombreEmisor> <tns:Titular>P3208600A</tns:Titular> <tns:Notificado>P3208600A</tns:Notificado> <tns:TipoMensajeria>NOTIFICACION</tns:TipoMensajeria> <tns:ActoNotificado>PRUEBAS</tns:ActoNotificado> <tns:Asunto>Prueba Notificacion</tns:Asunto> <tns:Cuerpo>esto es una prueba de Notificacion WS</tns:Cuerpo> <tns:Detalles /> <tns:FerchaPuestaDisposicion>2017-01-30T18:18:04+01:00</tns:FerchaPuestaDisposicion> </tns:Metadatos> </tns:RespuestaConsulta> Última edición por apicito fecha: 07-02-2017 a las 20:27:38. |
#7
|
|||
|
|||
Si tienes
EstadoTipo = (NO_LEIDA, ACEPTADA, RECHAZADA, EXPIRADA); Al final solo tienes de que tipo es el estado actuamente, solo necesitas compar el Estadotipo. con algun case o varios if y devolver la cadena que desees. Estadotipo no va a contener un valor si no el tipo. Saludos. |
#8
|
||||
|
||||
[SOLUCIONADO] Tratamiento de tipos enumerados
Gracias bitbow.
No había trabajado nunca con este tipo de datos y me estaba volviendo loco. Ahora lo entiendo: Código:
case result.Metadatos[i].Estado of EstadoTipo.NO_LEIDA: Estado := 'NO_LEIDA'; EstadoTipo.ACEPTADA: Estado := 'ACEPTADA'; EstadoTipo.RECHAZADA: Estado := 'RECHAZADA'; EstadoTipo.EXPIRADA: Estado := 'EXPIRADA'; end; |
#9
|
||||
|
||||
Podes usar este truco: Ayudante para tipos enumerados
Código PHP:
Última edición por AgustinOrtu fecha: 07-02-2017 a las 23:46:31. |
#10
|
||||
|
||||
Hola.
Para versiones mas antiguas de Delphi, otra opcion es:
Uso:
Saludos ![]()
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 08-02-2017 a las 00:18:54. Razón: agregar opción |
#11
|
||||
|
||||
Gracias [AgustinOrtu] y ecfisa.
Al final é optado por la solución de ecfisa: Código:
uses TypInfo; ... memo.Lines.Add('Estado '+GetEnumName( TypeInfo( EstadoTipo ), Ord( result.Metadatos[i].Estado ))); |
#12
|
||||
|
||||
Abusando de vuestra paciencia, aprovecho que ya está en el post #6 de este hilo la definición del TRemotable y el xml que se me devuelve para hacer otra pregunta.
Si el xml me devuelve el valor del TicketID en esta etiqueta: Código:
<tns:Metadatos tns:ticketID="148620"> <tns:MensajeID>1485796663920-1-0</tns:MensajeID> Código:
MetadatosTipo = class(TRemotable) private FticketID: ticketID; .... published property ticketID: ticketID Index (IS_ATTR) read FticketID write FticketID; Por que a pesar de que el IDE me lo sugiere como uno de los miembros de result.Metadatos[i], si hago: Código:
memo.Lines.Add('ticketID '+result.Metadatos[i].ticketID); Tengo que hacer algo distinto al estar declarado com IS_ATTR?. Un saludo. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
constantes temporales | Crandel | Varios | 11 | 17-01-2007 00:53:02 |
Constantes o uso de Dominios | Abel Garcia | Firebird e Interbase | 1 | 10-10-2006 16:15:29 |
variables y constantes | SaGuMa | Varios | 13 | 03-10-2006 16:18:03 |
Def. de constantes - Casting | Mariana | OOP | 3 | 21-10-2005 19:24:23 |
constantes globales | acrophet | Varios | 3 | 18-09-2003 13:51:45 |
![]() |
|