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 22-12-2015
josepicd josepicd is offline
Miembro
 
Registrado: jun 2015
Posts: 57
Poder: 9
josepicd Va por buen camino
Como recorrer un record por indice

Pues eso, quiero saber si es posible y como recorrer una estructura record a traves de un indice o algo asi.

No es este el caso y ya se que esto no es correcto, pero para que podais ver un ejemplo de lo que necesito.


Código Delphi [-]
Type
  TXtradata = record
    version   : dword;
    revision  : dword;
    contador : dword;
    codusuario : dword;
  end;

Var
  xtra : TXtradata;

begin
  for i := low(TXtradata) to high(TXtradata) do
    xtra[i] := 0;
end;

Es decir quiero acceder a los elemento de una estructura sin conocer como esta formada la estrucutra.

Gracias
Responder Con Cita
  #2  
Antiguo 22-12-2015
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola

Pues hasta donde se no es posible recorrer asi los campos de un record ya que no es una estructura vectorial. Lo que se me ocurre es crear una clase y simular recorrer como indice los campos

Código Delphi [-]
TMiclase=class
private
FCampo1:integer;
FCampo2:string;
//...
//etc
Procedure SetFields(i:integer;Value:variant);
Functon GetFields(i:integer):variant;
public
Property Fields[i:integer]:variant read GetFields write SetFields;
end;

Y en la implementacion devuelves el valor que quieras de acuerdo al indice

Código Delphi [-]
Function TMiclase.GetFields(i:integer):variant;
begin
case i of
0:result:=FCampo1;
//...
//los demas campos
end;
end;

Espero sea util

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #3  
Antiguo 22-12-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
A partir de Delphi 2010 podes usar RTTI

Código Delphi [-]
uses
  Rtti;

procedure TForm1.Button1Click(Sender: TObject);
var
  Ctx: TRttiContext;
  T: TRttiType;
  F: TRttiField;
  Fields: TArray;
begin
  Memo1.Lines.Clear;
  T := Ctx.GetType(TypeInfo(TXtradata));
  if not Assigned(T) then
    Exit;

  Fields := T.GetFields;

  Memo1.Lines.Add('Type: ' + T.Name);
  for F in Fields do
    Memo1.Lines.Add(F.Name);
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
¿Como comparar 2 record? geolife Varios 6 01-10-2015 22:22:19
como puedo generar un indice en paradox mrmago Conexión con bases de datos 4 13-01-2006 23:19:54
como hacer un fichero indice Antuan Tablas planas 5 03-10-2005 15:46:42
como se borra 1 indice con sql User_Baja_2 Conexión con bases de datos 1 23-06-2003 08:04:49
Especificar el índice en SQL como un parámetro Tio SQL 4 19-06-2003 01:36:02


La franja horaria es GMT +2. Ahora son las 08:35:43.


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