Dúvida WebServices
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 :
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
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:
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
Curtidas 0
Respostas
Psyjacko
11/04/2008
Tem essa outra função aqui tb
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
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
Psyjacko
11/04/2008
ajudem por favor !!
GOSTEI 0
Psyjacko
11/04/2008
kd galera ? postem ai !!
GOSTEI 0
Emerson Nascimento
11/04/2008
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
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
Psyjacko
11/04/2008
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)
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
Emerson Nascimento
11/04/2008
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.
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
Psyjacko
11/04/2008
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;
nome:String;
id:integer;
GOSTEI 0