Fórum Pegar valores de um ponteiro #273338
21/03/2005
0
O componenente tem uma funcão assim:
function XPTO( Buffer: Pointer): Boolean;
Eu preciso testar o conteúdo de buffer e retornar true ou false.
Como faço para extrair o conteudo desse buffer? Eu tentei:
var res : integer begin res := Buffer^;
Mas não dá certo, pois buffer não é oficialmente um ponteiro de integer.
Grato.
Ronaldo
Curtir tópico
+ 0Posts
21/03/2005
Marcelo Saviski
if Buffer <> nil then res := PInteger(Buffer)^;
se fosse outro tipo, talvez um tipo personalizado, 1º vc teria que definir o tipo do ponteiro
type PMeuTipo = ^TMeuTipo;
Gostei + 0
21/03/2005
Nildo
Gostei + 0
21/03/2005
Ronaldo
res é uma variável que ainda vou trabalhar. Não é meu result.
Gostei + 0
21/03/2005
Nildo
res é uma variável que ainda vou trabalhar. Não é meu result.[/quote:4e0b221378]
A ta.. Nesse caso a dica do Marcelo resolve seu problema
Gostei + 0
21/03/2005
Ronaldo
if Buffer <> nil then res := PInteger(Buffer)^;
se fosse outro tipo, talvez um tipo personalizado, 1º vc teria que definir o tipo do ponteiro
type PMeuTipo = ^TMeuTipo;
Pois é, é que tenho uma outra agravante: Buffer não é somente integer. Hora pode ser string, hora date, etc.
E ele vem internamente e não dá para eu alterar. Eu só posso testar o seu valor e dizer se aceito ou não.
Gostei + 0
21/03/2005
Nildo
Gostei + 0
21/03/2005
Ronaldo
Exatamente... HEHE!!
Para ser mais claro, é o seguinte: Buffer é o valor de um TField, e eu preciso saber se ele possui um valor ou se está vazio (null).
Gostei + 0
21/03/2005
Nildo
Ponteiro <> nil
Pode tentar também:
if IsValidPointer( Ponteiro, 4 ) then
Gostei + 0
21/03/2005
Ronaldo
retorna apenas se o ponteiro está instanciado. No meu caso sempre será true e não me serve.
Eu não encontrei essa funcção no delphi 7 e nem no help. Em qual unit ela fica?
valeu.
Gostei + 0
21/03/2005
Nildo
Você pode verificar se o conteúdo dele não é ZERO...
if PByte( Ponteiro )^ <> 0 then Tem Alguma Coisa Preenchida
Gostei + 0
21/03/2005
Marco Salles
Gostei + 0
21/03/2005
Nildo
Um abraço :wink:
Gostei + 0
21/03/2005
Ronaldo
if PByte( Ponteiro )^ <> 0 then Tem Alguma Coisa Preenchida
Blz,
Funcionou. Só tive que trocar o ´0´ pelo ´null´.
Valeu.
Gostei + 0
21/03/2005
Nildo
Boa :D
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)