Programa em Clipper abortando com a WAPI?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Programa em Clipper abortando com a WAPI?

Mensagem por ANDRIL »

Procurei o topico fixo da Wapi e nao encontrei e sim varios topicos, entao nao sabia se podia dentro de um topico, resolvi postar aqui, pq envolve meu sistema em clipper.

Tenho linkado a WAPI.LIB em meu sistema, para que faça download de programas extras, caso o cliente necessite, assim evito distribuir tudo junto e o instalador ficar muito grande.

O fato curioso, é que sempre funcionou legal as funcoes ISINTERNET() e DLOADFILE().

Neste ultimo mes, clientes comecaram a dizer que o sistema estava fechando sozinho sem mensagem de erro. Logo identifiquei o "terrivel" (terrivel porque nao temos ideia de onde vem) erro:

_EINSTVAR (0) Unrecoverable error 667: Eval stack fault

Passei tres dias verificando as ultimas alteracoes que fiz no sistema, desfiz, refiz etc.

No windows 98 o erro acontece em alguns lugares quase que especificos,
ja no XP ocorre mais vezes, apenas ao acessar uma tela, pronto, ja da erro.

Identifiquei o problema: funcoes IsInternet() e DLoadFile(). Não sei o porque comecou a dar esse conflito, se crio no sistema as 2 funcoes apenas com um return funciona normalmente.

Código: Selecionar todos

function IsInternet()
return

function DLoadFile()
return
Ja compilei o sistema em outra maquina, em um XP, pensando ser problema em algum arquivo do meu Win98, mais permanece o problema.

Substitui a WAPI.LIB, a CTP.LIB por outras que tinha backupeado, mais permanece na mesma.

Alguem tem alguma ideia que tipo de conflito meu sistema, esta causando nas duas funcoes???

Fico no aguardo.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

eval stack fault

Mensagem por Maligno »

Se o caso é do erro "667: eval stack fault", talvez você pudesse aumentar o espaço de pilha do programa, pelo BLinker (se não me falha você usa o BLinker, não?). Basta incluir no script do linker o comando "STACK <x>", onde x é a quantidade de bytes da pilha (5120 é o default para o Clipper). Ou, como o próprio help do BLinker orienta, em casos de problema de pilha, o ideal é incrementar o "BLINKER PROCEDURE PATH TO <x> (comece a partir de 50), ao invés de intervir diretamente com o STACK.

Tente uma dessas alternativas. Talvez ajude a resolver o problema. Só não exagere no valor do comando BLINKER PROCEDURE PATH TO <x>, lembrando que a cada dezena de <x> o consumo de memória é de 1KB.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Programa em Clipper abortando com a WAPI?

Mensagem por ANDRIL »

Maligno, ja fiz as duas sugestoes que vc passou, porem sem resultado. Acho q nao deva ser isso, pq funcionava perfeitamente. Outra coisa, onde esta dando erro, nem passa perto de onde uso as funcoes IsInternet() e DLoadFile(). Não tem nada a ver.

Alias só uso estas funcoes, em uma unica funcao, chamada ENVIAR que verifica se o SMTPSend.exe esta no diretorio, se nao tiver, faz o download do mesmo.

Tive vendo aqui, no Avast, na Quarentena, tem a Wapi e o U2F identificados como virus, sendo Tenga-B e Trojan other.

Sera que isso tem haver com esse problema? Desativei a proteção do Avast e compilei novamente, rodei o programa, aconteceu mesmo assim.

Sempre usei atraves da Wapi.lib, vc poderia passar os parametros para usar atraves do Wapi.exe:

Código: Selecionar todos

IsInternet(0,"www.nsi-sp.com/isinternet.inf")

e 

DLoadFile("www.nsi-sp.com/smtpsend.exe",@cRet,"&cArq",10)

Obrigado pela ajuda.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Programa em Clipper abortando com a WAPI?

Mensagem por Maligno »

Tanto IsInternet() quanto DLoadFile() utilizam o mesmo switch como argumento do utilitário WAPI. A função IsInternet() apenas utiliza um endereço comum e seguramente estável (www.google.com) para verificar se há uma conexão ativa com a internet. Se o conteúdo da página principal puder ser baixado, a função retorna TRUE, indicando que há conexão.

A sintaxe para execução direta (consta no help) é simples:

WAPI -URL2FILE:"link";"arquivo_destino";<timeOut>;result.txt

O valor de timeOut especifica o tempo (segundos) que a função da API WinINet do Windows esperará até que ela retorne. Pode até ser zero (tempo de espera infinito), mas se for, um valor errôneo poderá ser retornado. O ideal, a meu ver, é algo entre 5 e 10.
O arquivo de resultado "result.txt" poderá ser testado para verificação do resultado da operação. Se zero, sucesso.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Programa em Clipper abortando com a WAPI?

Mensagem por ANDRIL »

Baixei a WAPI_V1.03 e piorou... agora no win98 da o erro ao abrir a metade das tabelas e no XP o programa nem abre

Tem algo no meu sistema que ta causando esta incompatibilidade, mais nao sei identificar oque???

Outro sistema que tenho, funciona normal.

obrigado + uma vez!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Programa em Clipper abortando com a WAPI?

Mensagem por Maligno »

No caso da execução direta do utilitário, como sugeri, não há absolutamente nada que interfira no prosseguimento do sistema, já que você irá executar um programa externo. Imagino que, claro, você se lembrou de remover a WAPI.LIB do seu script, não é?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Re: Programa em Clipper abortando com a WAPI?

Mensagem por ANDRIL »

Maligno, criei as funcoes chamando o utilitário Wapi.exe e funcionou. Mais nao descobri o que causou o problema.

Estava lendo as futuras implementações no Wapi e queria saber se ja tem algo a respeito do FTP?

Obrigado pela ajuda.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Programa em Clipper abortando com a WAPI?

Mensagem por Maligno »

Espero que dessa forma tudo possa voltar a funcionar corretamente, apesar de que não foi possível apontar o erro diretamente.

Quanto ao FTP, é necessário ainda terminar o WAPI no modo residente, que será multithread. Nada foi esquecido. Mas infelizmente, não tenho dar um prazo. A coisa tá feia por aqui. :[
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder