Re: [firebase-br] É possivel criar dinâmicamente uma variavel em outro form

Fagner Araujo fagaraujo em yahoo.com.br
Seg Jan 9 16:54:49 -03 2006


Carlos,
      dinamicamente você consegue alocar espaço para uma variavel. Porém  você deve saber que ela manterá o mesmo nome do ponteiro que a  referencia, se é que você esta alocando um ponteiro para ela.
      A situação ficaria mas ou menos como isso:
    
    type
      PInteger = ^Integer; // ou qualquer ponteiro para qualquer tipo
      TForm1 = class(TForm)
       private
       public
         Ptr: ^Integer; // ou  Ptr: PInteger; ou o ponteiro que vc definiu
      end;
    
    var
      Form1: TForm1;
    
    Em em qualquer lugar do código você alocaria espaço para esse ponteiro  com qualquer função de alocação de memória do Delphi/Pascal ou da API  Win32:
      No delphi:
        GetMem(Form1.Ptr, sizeof(Integer)); // ou New(Form1.Ptr); caso Ptr  seja um ponteiro de tipo definido para que o compilador saiba em tempo  de execução qual o tamanho de memoria para alocar.
  
    Feito isso você já pode utilizar o Inteiro que foi alocado e cujo endereço esta contido em Ptr.
    Para utilizar as funções da API Win32 conulte o manual de LocalAlloc e  GlobalAlloc caso vc realmente queira utiliza-las me avise que lhe passo  o funcionamento delas para você.
    
    Só é importante lembrar que a variavel alocada não faz parte do espaço  de memória ocupada pelo objeto. No objeto existe apenas a referencia a  localização de memória requisitada. Porém com essa técnica você poderá  alocar memória para qualquer tipo de estrutura, incluse para arrays  variaveis como você poderá facilmente concluir.
    
    Você viu que dessa forma você aloca memória para a variavel e guarda a  referencia para essa memória dentro do objeto. Para criar um espaço de  memória exatamente dentro do objeto você vai ter um trabalhinho a mais  para cria-lo, fundi-lo com a memória já ocupada pelo objeto e fazer com  que as referência feitas pelo compilador dentro dos códigos que  referenciam esse objeto sejam modificadas para incluir os offsets que  sua memória alocada vai induzir. Resumindo é melhor você ou criar a  partir de ponteiros, ou atraves de listas de ponteiros o que lhe ajuda  no fato de vc não precisar definir um ponteiro para cada variavel  criada.
    
    Espero que tenha lhe ajudado.
    
    Atenciosamente,
      Fagner Araújo.
  
Carlos Alberto dos santos <sdcarlosalberto em hotmail.com> escreveu:  Olá amigos, tudo bom? É possivel criar dinâmicamente ou seja em runtime uma 
variavel em outro form. Obrigado

_________________________________________________________________
Seja um dos primeiros a testar o novo Windows Live Mail Beta. Acesse  
http://www.ideas.live.com


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



		
---------------------------------
 Yahoo! doce lar. Faça do Yahoo! sua homepage.


Mais detalhes sobre a lista de discussão lista