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