Fórum Dúvida WebServices #357024
11/04/2008
0
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
Curtir tópico
+ 0Posts
11/04/2008
Psyjacko
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
Gostei + 0
12/04/2008
Psyjacko
Gostei + 0
13/04/2008
Psyjacko
Gostei + 0
13/04/2008
Emerson Nascimento
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
Gostei + 0
13/04/2008
Psyjacko
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)
Gostei + 0
13/04/2008
Emerson Nascimento
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.
Gostei + 0
14/04/2008
Psyjacko
nome:String;
id:integer;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)