Página 1 de 1

Programa em Clipper abortando com a WAPI?

Enviado: 08 Out 2009 15:09
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.

eval stack fault

Enviado: 08 Out 2009 16:53
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.

Re: Programa em Clipper abortando com a WAPI?

Enviado: 08 Out 2009 17:54
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.

Re: Programa em Clipper abortando com a WAPI?

Enviado: 08 Out 2009 18:16
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.

Re: Programa em Clipper abortando com a WAPI?

Enviado: 08 Out 2009 19:11
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!

Re: Programa em Clipper abortando com a WAPI?

Enviado: 08 Out 2009 19:18
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 é?

Re: Programa em Clipper abortando com a WAPI?

Enviado: 09 Out 2009 07:11
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+

Re: Programa em Clipper abortando com a WAPI?

Enviado: 09 Out 2009 07:16
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. :[