DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Andre Luiz Bovo
 

País: Brasil
Estado: SP
Cidade: Campinas
Mensagens: 12
 Postado em: 21/10/2010 12:22:14 PM

Caros amigos, estou com um problema em uma aplicação bem especifica desenvolvida em Delphi, essa aplicação tem por finalidade controlar um equipamento USB especifico usado para analizar a umidade, a empresa onde trabalho comprou esse equipamento que veio com um software fechado para usa-lo sem muitos recursos, como precisavamos implementar recursos adicionais, entrei em contato com a fabrica e eles me enviaram um exemplo de codigo fonte em Delphi que usa uma DLL, o executavel que veio junto já compilado funciona bem, mas o codigo gera uma infinidade de erros quando tento compilar.

Já instalei o componente que veio junto com o código e registrei a DLL no windows, mas não funcionou.

Uso o Delphi 2010 com Windows 7 32bits, e não tenho conhecimento avançado, apesar de já ter desenvlvido muitas aplicações em Delphi desde a versão 7, nunca usei DLLs, e fiquei bem confuso com o exemplo enviado pela fabrica.

Se alguem puder me ajudar, desde já eu agradeço, o arquivo está no link abaixo:

http://www.megaupload.com/?d=ZZH1Q7KV

LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 21/10/2010 2:08:53 PM
Você ja executou o arquivo RegisterCK.bat? Como você utiliza o win 7 você deve executar este arquivo com privilégios de administrador. Após fazer isso abra o seu projeto (seu siotema) e no menu Project localize o item import type libarye na lista encontre o item relacionado ao seu componente. No caso: algo relacionado a DEvcom...qualquer coisa posta ai.

 
Andre Luiz Bovo
 

País: Brasil
Estado: SP
Cidade: Campinas
Mensagens: 12
 Postado em: 21/10/2010 3:55:35 PM
Leonardo, obrigado pelas dicas, consegui compilar sem erros, mas agora gera erros ao executar, segue erros abaixo:




E quando clico em "break" aponta a linha 233 na TestUnit.pas na procedure abaixo:

--------------------------------------------------------------------------------------------
procedure TFCKTest.BGetDevNumClick(Sender: TObject);
type
  pIntegerArray = ^IntegerArray;
  IntegerArray = array of integer;
var
  T_A: tSafeArray;
  SA: PSafeArray;
  D, N, I: integer;
  NumProbes, pv: integer;
  MC750Dev: integer;
begin // Enumerate all available devices and put device typ in listbox
  EdPortName.Text := CKServer.ComportName;
  //SA := CKServer.AllDev;
  SA := CKServer.Get_AllDev;
  T_A := SA^;       Linha apontada como erro.
  D := SafeArrayGetDim(sa);
  N := SafeArrayGetElemsize(sa); //intarr 4
  EdNumDevices.Text := IntToStr(sa.rgsabound[0].cElements);
  NumProbes := sa.rgsabound[0].cElements;
  LBDeviceTyp.Clear;
  MC750Dev := 0;
  for I := 0 to NumProbes - 1 do
  begin
    SafeArrayGetElement(sa, i, pv);
    LBDeviceTyp.Items.Add(IntToStr(pv));
    if pv = 12 then
      MC750Dev := 12;
  end;
  SafeArrayDestroyData(sa);
  PressureOK := MC750Dev = 12; //no airbox
  if PressureOK then
  begin
    BSetPressure.Enabled := false;
    BPrUpdate.Enabled := false;
  end
  else
  begin
    BSetPressure.Enabled := true;
    BPrUpdate.Enabled := true;
  end;
  if Logging then
    writeln(LogFile, 'EnumDev:', NumProbes);
end;


---------------------------------------------------------------------------------------
Agradeço se puder me ajudar.

Desde já, obrigado.


 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 21/10/2010 4:23:52 PM
este erro esta ocorrendo no seu sistema ou no Exemplo?

 
MARCELO CASTRO DINIZ
 
 


País: Brasil
Estado: MG
Cidade: ITAÚNA
Mensagens: 79
 Postado em: 21/10/2010 4:41:41 PM
Comente esta linha: //  T_A := SA^;    

Eu não encontrei o uso da variável T_A neste código.
   

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 21/10/2010 4:42:54 PM

Citação:
Comente esta linha: //  T_A := SA^;    

Eu não encontrei o uso da variável T_A neste código.
   


T_A: tSafeArray;//declarado em variáveis.

 
MARCELO CASTRO DINIZ
 
 


País: Brasil
Estado: MG
Cidade: ITAÚNA
Mensagens: 79
 Postado em: 21/10/2010 4:44:00 PM


Citação:


Citação:
Comente esta linha: //  T_A := SA^;    

Eu não encontrei o uso da variável T_A neste código.
   


T_A: tSafeArray;//declarado em variáveis.
 

sim ela é uma variável, mais esta sendo usada aonde?
Acredito pode se comentar ou irá funcionar ou vai da erro em outro lugar.

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 21/10/2010 4:45:45 PM
Inverta o comentário, e recompile.

#Código

  //SA := CKServer.AllDev;
  SA := CKServer.Get_AllDev;


//para:

  SA := CKServer.AllDev;
  //SA := CKServer.Get_AllDev;



 
Andre Luiz Bovo
 

País: Brasil
Estado: SP
Cidade: Campinas
Mensagens: 12
 Postado em: 21/10/2010 5:30:46 PM
Obrigado Leonardo, fiz a inversão e funcionou.

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 22/10/2010 7:18:52 AM
Precisando é postar aqui no fórum, pois tem muita gente aqui que pode ajudar você. Abraços

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03