Passando um objeto como paramentro de uma função
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.
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
Curtidas 0
Respostas
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:
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!
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
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:
Esqueci de dizer isso na outra mensagem... :oops:
Abraços!
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
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
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
29/06/2004
Olá
Que erro aparece?
Tente nao colocar
dmAppServer.objSql.CommandText := strSql;
mas sim
objSQL.CommandText := strSQL
Espero que ajude
Até+
Que erro aparece?
Tente nao colocar
dmAppServer.objSql.CommandText := strSql;
mas sim
objSQL.CommandText := strSQL
Espero que ajude
Até+
GOSTEI 0
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;
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
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!
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