Como passar parametros para uma função em uma DLL
Quero passar um DBImage como parametro para uma DLL que se conecta com banco de dados. Na DLL tenho a conexão com o banco um Query e um DataSource ligado ao Query o query ja tem o comando SQL, só precisa ser ativado se ainda não estiver. Ele retorna um campo Blob com uma imagem que quero carregar no DBImage passado como parametro.
Tipo assim
DBImage.DataSource := O Data source da DLL;
DBImage.DataField := ´O Nome do Campo na Tabela´;
Query.Open;
Mas nada acontece, se eu usar a mesma função sem ser pela DLL funciona. Acho que tenho que usar aqueles operadores @ ou ^ para trabalhar com a memória mas não sei como estes operadores funcionam, alguém poderia dar umas dicas. Agradeço
Tipo assim
DBImage.DataSource := O Data source da DLL;
DBImage.DataField := ´O Nome do Campo na Tabela´;
Query.Open;
Mas nada acontece, se eu usar a mesma função sem ser pela DLL funciona. Acho que tenho que usar aqueles operadores @ ou ^ para trabalhar com a memória mas não sei como estes operadores funcionam, alguém poderia dar umas dicas. Agradeço
Mkoch
Curtidas 0
Respostas
Edilcimar
08/02/2006
Crie uma função ou procedure do tipo
Function MinhaFuncao(NomeParametro : TipoVariável) : TipodeRetorno; Stdcall; External ´nomedll.dll´;
e depois faça a chamada normalmente
MinhaFuncao(Variavel), note que este minha função deve existir dentro da dll
Function MinhaFuncao(NomeParametro : TipoVariável) : TipodeRetorno; Stdcall; External ´nomedll.dll´;
e depois faça a chamada normalmente
MinhaFuncao(Variavel), note que este minha função deve existir dentro da dll
GOSTEI 0
Mkoch
08/02/2006
Isso eu fiz, o problema é que passando o DbImage como parametro da função, ele não recebe a imagem que o query dentro da dll retorna, simplesmente nada acontece.
GOSTEI 0
Edilcimar
08/02/2006
coloque um timage no form e faça o teste
timage.picture.assign(minhafuncao(table.fieldbyname(´nomecampo´).value));
não testei, mas o princípio é este
timage.picture.assign(minhafuncao(table.fieldbyname(´nomecampo´).value));
não testei, mas o princípio é este
GOSTEI 0