Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1710 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa noite equipe de desenvolvimento do ACBr, vi que os amigos usam uma forma de retorno dos dados em que é alocado 256 bytes na memoria e se a resposta for maior que isso é necessário fazer um novo alocamento de memoria com o tamanho retornado para ser enviado uma segunda solicitação a lib para ser retornado os dados que ficaram armazenados estaticamente... bom minha pergunta e ao mesmo tempo dica seria a seguinte: porque não simplesmente é alocado um stream de bytes na lib com a seguinte estrutura:

OFFSET 0 = Resultado  (1 byte) (0=Sucesso)

OFFSET 1 = Length (4 bytes) (DWORD) Integer unsigned podendo armazenar um valor de 0 a 4294967295 podendo armazenar mais de 4 GB
OFFSET 5 = A partir desse ponto ate o Length seria a informação que desejaria retornar

O retorno das funções seria apenas o  Pointer, eu fiz os testes fica muito mais pratico, rápido e organizado o código 

  • Fundadores
Postado

A ideia era fazer algo mais simples  e compatível possível...

A ideia inicial era implementar como a API do Windows, com uma chamada informando o tamanho Zero, apenas para saber o Tamanho necessário para a locação de memória...

Mas achamos que da maneira que está, facilita o uso, principalmente para programadores que nunca trabalharam com DLLs 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Caso o amigo queira posso enviar o exemplo em Java juntamente com a dll que separei as funções do VFPe, acho que ficou ate mais simples...

52 minutos atrás, Daniel Simoes disse:

A ideia era fazer algo mais simples  e compatível possível...

A ideia inicial era implementar como a API do Windows, com uma chamada informando o tamanho Zero, apenas para saber o Tamanho necessário para a locação de memória...

Mas achamos que da maneira que está, facilita o uso, principalmente para programadores que nunca trabalharam com DLLs 

 

  • Obrigado 1
Postado
35 minutos atrás, Rafael Dias disse:

não vejo como seria mais simples pois da maneira que descreve sempre terei que fazer uma chamada para alocar a memoria e outra para limpar a mesma, ficando 6 por meia duzia

Amigo atualmente isso ja é feito...

Postado

Não hoje em dia é feito diferente, nem sempre eu preciso fazer outra chamada para fazer ter acesso a string completa e se quiser posso passar uma string maior, agora da sua forma vou sempre ter que fazer 2 chamadas nas funções da lib, não vejo o pq de ser mais eficiente assim ou melhor.

 

Postado
8 minutos atrás, Rafael Dias disse:

Não hoje em dia é feito diferente, nem sempre eu preciso fazer outra chamada para fazer ter acesso a string completa e se quiser posso passar uma string maior, agora da sua forma vou sempre ter que fazer 2 chamadas nas funções da lib, não vejo o pq de ser mais eficiente assim ou melhor.

O Protocolo que sugeri é muito parecido com da lib do SAT... mais tudo bem você tem razão

  • Curtir 1
  • 2 semanas depois ...
  • Administradores
Postado

Bom dia.

Dado que a conclusão deste tópico é que não haverão mudanças nos fonte originadas desta conversa, estou encerrando o tópico e caso no futuro haja necessidade pode ser criado um novo tópico sobre o assunto.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 1710 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.