GARANTIR DESCONTO

Fórum Dúvida WebServices #357024

11/04/2008

0

Galera estou com dúvidas sobre os métodos que são feitos no servidor , com
relação ao tipo de dado que a variável irá armazenar , olhem esses exemplos dessas funções abaixo :

Function RetornaID(Campo : OleVariant) : OleVariant; Stdcall;

essa função faz com que gere um ID de acordo com o valor que está armazenado na tabela , minha dúvida é o seguinte ...pq declarar a variável Campo do tipo OleVariant e não String ? pq lá na tabela ela é uma string e está relacionada no parametro pra trazer o ID.

outra função só que pra retornar Hora e data do servidor

Function RetornaDataHora:String; Stdcall;

pq está como String e não como OleVariant como a de cima ? as funções ficam no mesmo programa WebService.
Eu tentei relacionar que OleVariant fosse um tipo específico pra armazenar dados que manipulamos pela internet , mas caí em contradição quando ví a outra função , se alguém souber por favor me explique !

valeu ! :wink:


Psyjacko

Psyjacko

Responder

Posts

11/04/2008

Psyjacko

Tem essa outra função aqui tb

Function RetClientePorMetodo(ID_CLIENTE : Real):OleVariant; Stdcall;

pq o tipo de dado de ID_CLIENTE tb não é OleVariant ? não to entendendo mt bem isso...conto com a ajuda de vcs !

valeu :D


Responder

Gostei + 0

12/04/2008

Psyjacko

ajudem por favor !!


Responder

Gostei + 0

13/04/2008

Psyjacko

kd galera ? postem ai !!


Responder

Gostei + 0

13/04/2008

Emerson Nascimento

usa-se olevariant porque é um tipo universal.

como você trabalha com webservices, seu serviço/método pode ser consumido por um programa feito em outra linguagem que não seja o Delphi, e essa linguagem pode não ter um dos tipos padrão do Delphi, como o double, por exemplo. daí usa-se um tipo universal para que não haja essa incompatibilidade.

ajudei ou compliquei? rs


Responder

Gostei + 0

13/04/2008

Psyjacko

po mt obrigado , agora entendí mesmo ! :D
mas ae vamos supôr que o programa que irá utilizar o WebService seja feito em outra linguagem e realmente não tenha algum tipo de variável declarada em algum método do webservice por exemplo...daria erro né ?

tipo, supondo que criei uma variável chamada Nome do tipo OleVariant no caso pra armazenar uma String e o programa que irá usar o webservice não possuia este tipo , ia ter erro num ia ?(obviamente o programa tem o tipo String , mas botei como exemplo só , poderia ser qualquer tipo de dado)


Responder

Gostei + 0

13/04/2008

Emerson Nascimento

não é necessário para variáveis internas. somente para parâmetros de entrada e/ou saída.

como você disse, imagine que você precisa receber num parâmetro, um nome. em Delphi seria do tipo string. daí o cabeçalho do método seria:

function BuscaCliente(Nome: string): integer; stdcall;

se o chamador fizer
id := BuscaCliente(´Teste´);
não haverá qualquer problema.

mas se fizer:
nome := ´Teste´; // na linguagem utilizada, nome é do tipo str
id := BuscaCliente(nome);
poderá ocasionar erro, pois o tipo não será reconhecido pela função.

e como você não sabe se a linguagem usada no programa chamador possui o tipo string ou o tipo integer (imagine que essa linguagem tenha o tipo str - como exemplificado acima - e int), você deve usar o tipo OleVariant, que aceita qualquer informação.

function BuscaCliente(Nome: OleVariant): OleVariant; stdcall;

se o chamador fizer:
id := BuscaCliente(´Teste´); // id é do tipo integer
funcionará normalmente

se o chamador fizer:
nome := ´Teste´ // na linguagem utilizada, nome é do tipo str
id := BuscaCliente(nome); // id é do tipo int
também funcionará normalmente

lembre-se: esse cuidado só é necessário para os valores com acesso externo. as variáveis internas da função podem ser dos tipos padrão do Delphi.


Responder

Gostei + 0

14/04/2008

Psyjacko

ah sim , entendí.O programa que vai usar o WebService é em delphi tb , então não tem problema botar os tipos das variáveis de acordo com oque ela irá armazenar mesmo né ?

nome:String;
id:integer;


Responder

Gostei + 0

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

Aceitar