Conversão de Tipos
Alguém sabe como converter uma variavel OleVariant para o tipo String? É possível?
Foxcyber
Curtidas 0
Respostas
Michael
22/08/2005
Colega,
A diferença principal entre [b:3281c0fdf1]Variant [/b:3281c0fdf1]e [b:3281c0fdf1]OleVariant [/b:3281c0fdf1]é que o primeiro contém dados que apenas a aplicação corrente sabe o que fazer com eles, enquanto o segundo deve conter tipos de dados compatíveis com [b:3281c0fdf1]OLE Automation[/b:3281c0fdf1].
Portanta, para vc atribuir uma string para um OleVariant, basta proceder como no tipo nativo Variants. A biblioteca de controle vai fazer as conversões necessárias.
[]´s
A diferença principal entre [b:3281c0fdf1]Variant [/b:3281c0fdf1]e [b:3281c0fdf1]OleVariant [/b:3281c0fdf1]é que o primeiro contém dados que apenas a aplicação corrente sabe o que fazer com eles, enquanto o segundo deve conter tipos de dados compatíveis com [b:3281c0fdf1]OLE Automation[/b:3281c0fdf1].
Portanta, para vc atribuir uma string para um OleVariant, basta proceder como no tipo nativo Variants. A biblioteca de controle vai fazer as conversões necessárias.
[]´s
GOSTEI 0
Foxcyber
22/08/2005
Para atribuir string para OleVariant eu consigo, mas não estou conseguindo atribuir OleVariant para string, pois o resultado me retorna com um monte de interrogação. Exemplo: ´??????????´.
GOSTEI 0
Massuda
22/08/2005
Acho que a conversão deve ser feita usando OleStrToString ou OleStrToVarStr.
GOSTEI 0
Michael
22/08/2005
Olá colega!
Testei aqui e funcionou. Faça vc mesmo para ver: coloque um botão em um form, e digite no seu evento OnClick:
Ambos os Captions do form e do botão deverão ficar definidos como ´Delphi´.
Talvez o erro esteja acontecendo com vc pq a variável OleVariant não contenha uma string. Vc deve verificar antes de atribuí-la, portanto.
Consulte no help do Delphi pelas funções: [b:3e6d778534]VarIsStr[/b:3e6d778534], [b:3e6d778534]VarIsType [/b:3e6d778534]e [b:3e6d778534]VarType[/b:3e6d778534].
[]´s
Testei aqui e funcionou. Faça vc mesmo para ver: coloque um botão em um form, e digite no seu evento OnClick:
procedure TForm1.Button1Click(Sender: TObject); var OV : OleVariant; S : string; begin OV := ´Delphi´; Caption := OV; S := OV; Button1.Caption := S; end;
Ambos os Captions do form e do botão deverão ficar definidos como ´Delphi´.
Talvez o erro esteja acontecendo com vc pq a variável OleVariant não contenha uma string. Vc deve verificar antes de atribuí-la, portanto.
Consulte no help do Delphi pelas funções: [b:3e6d778534]VarIsStr[/b:3e6d778534], [b:3e6d778534]VarIsType [/b:3e6d778534]e [b:3e6d778534]VarType[/b:3e6d778534].
[]´s
GOSTEI 0
Foxcyber
22/08/2005
Mas ele pede pra passar um PWideChar. Como passo, sendo que tenho um String? Da erro de compatibilidade de tipos.
GOSTEI 0
Adriano Santos
22/08/2005
Olá colega!
Testei aqui e funcionou. Faça vc mesmo para ver: coloque um botão em um form, e digite no seu evento OnClick:
Ambos os Captions do form e do botão deverão ficar definidos como ´Delphi´.
Talvez o erro esteja acontecendo com vc pq a variável OleVariant não contenha uma string. Vc deve verificar antes de atribuí-la, portanto.
Consulte no help do Delphi pelas funções: [b:7f8b70dac8]VarIsStr[/b:7f8b70dac8], [b:7f8b70dac8]VarIsType [/b:7f8b70dac8]e [b:7f8b70dac8]VarType[/b:7f8b70dac8].
[]´s
procedure TForm1.Button1Click(Sender: TObject); var OV : OleVariant; S : string; begin OV := ´Delphi´; Caption := OV; S := OV; Button1.Caption := S; end;
[b:7f8b70dac8]Michael[/b:7f8b70dac8], aqui também funcinou sem problemas do jeito que vc passou.
GOSTEI 0