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 05-10-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 22
Héctor Randolph Va por buen camino
Una opción:

En el archivo DB.PAS está definido este tipo de datos para los estados del DataSet

Código Delphi [-]
  TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey,
    dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead,
    dsInternalCalc, dsOpening);

Puedes crear un arreglo que contenga los estados en cadenas de caracteres, pero respetando el mismo orden en el que están definidos



Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
  const MyArray:array[0..12] of String = ('dsInactive', 'dsBrowse', 'dsEdit',
   'dsInsert', 'dsSetKey', 'dsCalcFields', 'dsFilter', 'dsNewValue', 'dsOldValue',
   'dsCurValue', 'dsBlockRead', 'dsInternalCalc', 'dsOpening');

begin
  //Ejemplo de como usarlo
  ShowMessage(MyArray[Ord(IBQuery1.State)]);
end;

Saludos
Responder Con Cita
  #2  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Para seguir con la idea de Hector (sin meterse a los abismos de RTTI) podes declarar directamente un vector sobre el tipo enumerado:

Código Delphi [-]
function StateToStr(AState: TDataSetState): string;

  const StateDesc:array[dsInactive..dsOpening] of String = 
  ('dsInactive', 'dsBrowse', 'dsEdit',
   'dsInsert', 'dsSetKey', 'dsCalcFields', 'dsFilter', 'dsNewValue', 'dsOldValue',
   'dsCurValue', 'dsBlockRead', 'dsInternalCalc', 'dsOpening');

begin
  Result := StateDesc[AState];
end;

Puede que no compile, pues no lo he probado, pero dejo la idea.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 05-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
sin meterse a los abismos de RTTI
Bueno, no es que esté muy profundo

Código Delphi [-]
uses TypInfo;

function RTTI_StateToStr(State: TDataSetState): String;
begin
  Result := TypInfo.GetEnumName(TypeInfo(TDataSetState), Integer(State));
end;

Por otra parte, un tipo enumerado como lo es TDataSetState no es más que un escalar que puede guardarse como entero:

Integer(Table.State)

y recuperarse con el moldeo inverso:

TDataSetState(3)

En otras palabras, ¿para qué guardar el string, que ocupará más espacio? Mejor cambia el tipo de datos a INTEGER.

Eso sí, me pica la curiosidad de por qué alguien querría guardar este dato en una tabla?

Agrego

Por cierto, en la versió jachguatiana, el arreglo

Código Delphi [-]
const StateDesc:array[dsInactive..dsOpening] of String = ...

también puede ponerse así:

Código Delphi [-]
const StateDesc:array[TDataSetState] of String = ...


// Saludos

Última edición por roman fecha: 05-10-2006 a las 03:27:22.
Responder Con Cita
  #4  
Antiguo 05-10-2006
Marcela Marcela is offline
Miembro
 
Registrado: may 2003
Posts: 30
Poder: 0
Marcela Va por buen camino
Listolis

Listo muchas gracias a todos por su colaboracion
Responder Con Cita
  #5  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cita:
Empezado por roman
Por cierto, en la versió jachguatiana, el arreglo
:eek

nunca había oido cosa semejante...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 05-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Oh! ¿Quizá debí decir jachapina?



// Saludos
Responder Con Cita
  #7  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
muy buena!!!
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 05-10-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 22
Héctor Randolph Va por buen camino
Por otra parte, la instrucción Ord(Query1.State) te devuelve el índice o la posición de cada elemento dentro del arreglo, otra opción es guardar ese índice, es decir, un entero tomando en cuenta lo siguiente

[0] dsInactive
[1] dsBrowse
[2] dsEdit
[3] dsInsert
...


Saludos
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
convertir string jsanchez Varios 3 31-07-2006 22:23:19
Convertir de String a un Array albertoP Internet 3 27-04-2006 22:20:50
Convertir un String en Pchart eyscom Varios 1 28-03-2004 15:51:30
Convertir campo tipo number de oracle a integer o string Sóstrato OOP 1 13-06-2003 09:18:55
Convertir un string a puntero jnrico Varios 1 27-05-2003 16:29:47


La franja horaria es GMT +2. Ahora son las 17:32:26.


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