Passando um objeto como paramentro de uma função

Delphi

29/06/2004

Boa tarde,
estou criando uma procedure onde preciso passar um objeto do meu projeto como parametro.
Esta procedure deve receber uma string que contém uma instrução SQL e um objeto do tipo TSQLDataSet .

Eis a procedure que estou tentando fazer

procedure TAppServerSiscomin.atribuiSQL(const strSql: WideString; objSql: OleVariant);
begin
dmAppServer.objSql.CommandText := strSql;
end;
Sei que esta não é a forma correta. Alguém poderia me dizer como fazer esta procedure ?

OBS: O meu projeto é um sistema multicamada e esta função esta sendo criada atravé do Type Library.

Obrigado.

Marcelo.


Mascotepc

Mascotepc

Curtidas 0

Respostas

Michael

Michael

29/06/2004

Olá amigo!

Não tenho muita experiência ainda em aplicações muiticamandas, portanto não sei se isso irá servir para você.

Você poderia fazer simplesmente isso:

procedure TAppServerSiscomin.atribuiSQL(const strSql: WideString; objSql: TSQLDataSet); 
...


Na verdade você não passa o objeto diretamente para a função, apenas o endereço dele na memória. Então a sua função estará acessando o meso objeto e não uma cópia dele, mesmo que este esteja fora do escopo da função.

Se isso servir para resolver seu problema, me avise, pois fiquei curioso agora.

Abraços!


GOSTEI 0
Michael

Michael

29/06/2004

Esqueci de um detalhe importante, Marcelo.

Como você está passando o endereço da memória para a função, não é necessário referenciar o DataModule, apenas o objeto em si. Algo como:

objSQL.CommandText := SQL;


Esqueci de dizer isso na outra mensagem... :oops:

Abraços!


GOSTEI 0
Mascotepc

Mascotepc

29/06/2004

Ola,
tentei dessa forma que vc demostrou, só que ele me retorna um erro falando que a procedure esta declarada de uma maneira diferente da declaração contida na interface do Servidor. Ai fui lá na declarção de métodos do Servidor (View -> Type Library ) e tentei adicionar este parametro (objSql) com o tipo TSqlDataSet, mas não consigo criá-lo com este DataType. Ele só aceita os DataTypes lá pré-estabelecidos.

Obrigado pela atenção.

OBS: Se conseguir resolver o problema entro em contato com vc.
vc poderia me passar seu e-mail para lhe passar maiores detalhes ?

Marcelo


GOSTEI 0
Paulo_amorim

Paulo_amorim

29/06/2004

Olá

Que erro aparece?

Tente nao colocar

dmAppServer.objSql.CommandText := strSql;

mas sim
objSQL.CommandText := strSQL

Espero que ajude
Até+


GOSTEI 0
Mascotepc

Mascotepc

29/06/2004

Já coloquei dessa forma: objSQL.CommandText := strSQL

o erro é o sequinte :

Declaration of ´atribuiSql´ differs from previous declaration

olhem a função como está

procedure TAppServerSiscomin.atribuiSql(const strSql: WideString; objSql: TSQLDATASet);
begin
objSql.CommandText := strSql;
end;


GOSTEI 0
Michael

Michael

29/06/2004

Olá amigo.

O erro que você reportou indica que a primeira declaração da procedure está diferente da segunda. O correto seria modificar a primeira de forma que ambas ficassem iguais, mas eu acredito que você já tenha feito isso. Você não pode especificar na cláusula uses a unit que contém o objeto TSQLDataSet? Assim ao compilar o objeto seria reconhecido.

Meu email está no final da mensagem.

Abraços!


GOSTEI 0
POSTAR