GARANTIR DESCONTO

Fórum Converter record em TStringList #369807

16/04/2009

0

Pessoal, tenho um programa com algumas variáveis do tipo record, cada uma com uma quantidade e tipos de campos diferentes.

Queria converter esses valores e os nomes dos campos para uma stringlist, fazendo uma função de conversão, enviando este record e a stringlist como parâmetros.

Ex:

var1 = record
            nome : string;
            telefone : string;
            idade : string;

var1.nome := ´meu nome´;
var1.telefone := ´meu telefone´;
var1.idade := ´idade´;


Convertendo para stringlist, gostaria de ter uma variável que seria acessada pelo value.

var2 : tstringlist;

var2.values[´nome´] = ´meu nome´;


Sei que eu posso criar essas variáveis manualmente, mas são muitos records e queria algo mais automatizado, pois em algumas partes do programa devo usar a variável record e em outra parte as stringLists.

Obrigado.


Prgdelphi

Prgdelphi

Responder

Posts

16/04/2009

Marco Salles

Hummm

Se entendi :


Exemplo :

procedure TForm1.Button1Click(Sender: TObject);
type
  TVar1_PTR = ^Var1;//Neste caso, ^TData_PTR é um ponteiro p/ o record Var1.
var
Obj,Obj1,Obj2,Obj3,Obj4:Var1;
PA:TVar1_PTR;

ListaDeObjetos:TStrings;

idx:integer;
begin
ListaDeObjetos:=TStringList.create;


Obj1.nome := ´meu nome1´;
Obj1.telefone := ´meu telefone1´;
Obj1.idade := ´idade1´;


ListaDeObjetos.AddObject(Obj1.nome,@Obj1);

Obj2.nome := ´meu nome2´;
Obj2.telefone := ´meu telefone2´;
Obj2.idade := ´idade3´;

ListaDeObjetos.AddObject(Obj2.nome,@Obj2);

Obj3.nome := ´meu nome3´;
Obj3.telefone := ´meu telefone3´;
Obj3.idade := ´idade3´;

ListaDeObjetos.AddObject(Obj3.nome,@Obj3);

Obj4.nome := ´meu nome4´;
Obj4.telefone := ´meu telefone4´;
Obj4.idade := ´idade4´;

ListaDeObjetos.AddObject(Obj4.nome,@Obj4);


idx:=ListaDeObjetos.IndexOf(obj3.nome); //Por exemplo
// ou  idx:=ListaDeObjetos.IndexOf(´Qualquer coisa´);

case Idx of
-1:Raise exception.Create(´Mensagem De Erro Nome Não existe´);
else
  begin
   Pa:=Pointer(ListaDeObjetos.Objects[idx]);
   Obj:=pa^;
   Showmessage(Obj.nome+13+
               Obj.telefone+13+
               Obj.idade);
  end;
end; //fim do case;
ListaDeObjetos.Free;
end;



Responder

Gostei + 0

20/04/2009

Marco Salles

Obrigado


De Nada


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar