Página 1 de 1

Erro:PROGRAMA MUITO EXTENSO PARA SER colocado NA MEMORIA

Enviado: 27 Jul 2007 13:07
por donato23
Caro colegas,
Estou executando um programa externo, e a mensagem postada no topico aparece.:
--> "PROGRAMA MUITO EXTENSO PARA SER colocado NA MEMORIA" <--
Estou compilando com 5.2 e meu lnk segue abaixo.:

Código: Selecionar todos

BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER F250
BLINKER PROCEDURE DEPTH 140
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE COMPRESS 1
BLINKER EXECUTABLE EXTEND
stack 7068
MAP S,A

fi sen,timeslic
search blxclp52.lib,ddgif.lib,ddlib.lib
out sen2.exe
Seria alguma configuracao do Windows XP a ser alterada?
Obrigado.

Enviado: 27 Jul 2007 13:12
por Maligno
Seu script parece legal. Fica difícil dizer com certeza, mas a última vez que tive esse erro foi quando tinha um pente de memória com pau. Você testou em outra máquina?


PS: Só uma correção de sintaxe: BLINKER EXECUTABLE CLIPPER //F:250

Enviado: 09 Set 2007 11:27
por Maligno
Então, continuando o post daqui mesmo:

Outra pergunta: você usa o comando RUN ou a função SwpRunCmd() do BLinker?

Enviado: 09 Set 2007 15:15
por donato23
Tentei com o Run, nunca havia usado o SwpRunCmd() ; no entanto eu tentei agora e não deu certo também..:

Código: Selecionar todos

..........
ass='"Atualizacao"'
msg='"Correcao do backup"'
wAux2="-body " + msg + " -server smtp.terra.com.br "+;
     "-f robertodonato@terra.com.br -to robertodonato@terra.com.br -subject "+;
     ass +" -u don23 -pw 32320"

var2='-body "Corpo da mensagem" -server smtp.terra.com.br -to robertodonato@terra.com.br -f robertodonato@terra.com.br -subject "Assunto" -u don23 -pw 32320'
? wAux2
? var2
inkey(0)
//run blat &var2
//run blat &wAux2
//run mail2.bat
//SwpRunCmd("blat &var2")
SwpRunCmd("mail2.bat") 

Usando o mail2.bat pela linha de comando funciona normalmente, nao testei em outro windows sem ser o XP SP2.
Valews Maligno

Enviado: 09 Set 2007 16:25
por Maligno
Bom, se funciona po batch, meu conselho é deixar assim, pois agora fiquei sem palavras. Não sei o que mais pode causar isso. Você poderia tentar outras alternativas, como por exemplo, aumentar a memória disponível para a sessão DOS (propriedades). Mas acho que daria no mesmo. :(

Enviado: 09 Set 2007 19:24
por Eolo
O SWPRUNCMD() tem parâmetros e um deles é sobre MEMÓRIA, segundo o help do Blinker7:

SWPRUNCMD(cCommand,nuMem,cRunPath,cTempPath)

-> nuMem é a quantidade de memória em Kb a ser liberada antes de executar o cCommand. Se este parâmetro for ZERO, vai ser liberada tanta memória quanto for possível...

Enviado: 09 Set 2007 19:34
por Eolo
Ops, faltou os outros parâmetros...

SWPRUNCMD("WIN",0,"C:\WINDOWS","F:\")

Este comando vai
- mudar o drive/pasta para c:\windows
- liberar tanta memória quanto for possível (o parâmetro ZERO)
- executar WIN
- criar o arquivo de troca temporário, se for requerido, em F:\.

Enviado: 09 Set 2007 22:51
por donato23
Eolo, nada feito dessa forma tambem . . . fiz uma gabiarra aqui e deu certo. O problema nao é o blat e sim a extensao dos comandos apos o blat.Será que tem algo a ver com tamanho do Buffer??Tentei tambem criar um .cmd, so que o run nao le este arquivo.

Criei dois .Bat , onde o primeiro configura o servidor e o outro envia o email, ai deu certo, so que se o nome do email for muito grande e o servidor tambem, ou seja, se alinha de comando ficar muito grande ele da o erro.

Código: Selecionar todos

SWPRUNCMD("t1.bat")
inkey(2)
SWPRUNCMD("t2.bat")

Conteudo do t1.bat

Código: Selecionar todos

@echo off
Blat -install smtp.terra.com.br robertodonato@terra.com.br - - - usuario senha
Conteudo do t2.bat

Código: Selecionar todos

@echo off
Blat -body t.txt -subject "Comunicado" -to mail@terra.com.br
Fiz outra tentativas que esbarram neste problema de memoria.:

1)

Código: Selecionar todos

set alte to mail5.bat
set alte on
? 'Blat -body "www.robertodonato.com" -server smtp.terra.com.br -f    robertodonato@terra.com.br -to robertodonato@terra.com.br -subject "Estoque" -u robertodonato -pw senha'
set alte off
set alte to
SWPRUNCMD("mail.bat",0,"d:\esto3","c:\")

2)

Código: Selecionar todos

@echo off
:::::::::::::: Lets set some variables ::::::::::::::
set eMail=robertodonato@terra.com.br
set subj=-s "Test Blat"
set server=-server smtp.terra.com.br 
set senha=-u robertodonato -pw senha
set bd=-body "www.robertodonato.com" 
::::::::::::::::: Now we run Blat!  :::::::::::::::::
@echo off
blat %0 -to %eMail% -f %eMail% %subj% %server% %bd% %senha%
3) Usando o bat2com, deu tambem o "Program too big to fit in memory" (msg do xp e nt em ingles, mesmo caso)

Obrigado pelas postagens, e se alguem conseguir mandar com Run Email.bat, favor postar.
Abraços.

Enviado: 10 Set 2007 00:28
por Maligno
so que se o nome do email for muito grande e o servidor tambem, ou seja, se alinha de comando ficar muito grande ele da o erro
Isso é uma limitação do DOS. Com a biblioteca WAPI tive o mesmo problema. E tive que "rebolar" pra resolver. Mas com o BLAT não sei se dá pra usar um arquivo de configuração. Acho que ele deve ter algo a respeito.

Enviado: 10 Set 2007 08:21
por Pablo César
Bom dia Wilson,

Eu não fiz testes com as BATs que você menciona. Mas está me parecendo que há alguns errinhos de sintaxe quando você chama o BLAT.

Pelo que eu entendo, a configuração do servidor é feito apenas uma vez só em cada máquina que você utiliza. Portanto aconselho ao colega, execute manualmente uma única vez. Eu acho que você pode criar pela sua aplicação Clipper uma .BAT para conectar e executá-la de dentro. Se o erro persistir, então coloque para roda essa BAT logo após de executar sua aplicação Clipper. Isto é faça uma BAT que chame seu aplicativo e logo após chame de forma condicional a sua segunda BAT que irá enviar o email (caso exita o arquivo .BAT). Assim:

Arquivo chamador do seu sistema (SIS.BAT)

Código: Selecionar todos

@ECHO OFF
SISTEMA.EXE
IF EXIST MANDA.BAT CALL MANDA.BAT
IF EXIST ENVIADO.OK DEL MANDA.BAT
E dê uma olhada a sintaxe que eu utilizo no meu arquivo MANDA.BAT:

Código: Selecionar todos

@ECHO OFF
MENSAGEM "Checando conex„o, favor aguarde..."
IF EXIST PAGINA.HTM DEL PAGINA.HTM
WAPI -URL2FILE:"www.google.com\about.html";PAGINA.HTM;2;INTERNET.LOG
IF EXIST PAGINA.HTM GOTO ENVIA
GOTO INOFF
:ENVIA
MENSAGEM "Enviando arquivo por email, favor aguarde..."
>LOG.TXT BLAT CORPO.MSG -attach CARTOES.XLS -serverSMTP smtp.cwb.terra.com.br -subject "Solicita‡„o Nro 001/2006" -f meu_email@terra.com.br -to producao@grafica.com.br -u nome_usuario_terra -pw senha_do_usuario_terra
VER_LOG.EXE
GOTO TERMINA
:INOFF
MENSAGEM "Sem possibilidades de envio de email !. Sem conex„o a internet." 5
GOTO TERMINA
:TERMINA
Inclusive você pode processar ou mandar visualizar o arquivo LOG.TXT que foi criado na seção "ENVIA" pelo aplicativo logo após chamado VER_LOG.EXE e também criar ou não o arquivo ENVIADO.OK para que o arquivo MANDA.BAT possa ser deletado caso tenha sido enviado o email com sucesso e não fique o arquivo para ser enviado novamente. O aplicativo MENSAGEM, é apenas uma exibidor de mensagens no radapé do vídeo conforme parametros passados (STRING e TEMPO de pausa). Veja também que o CORPO.MSG é uma arquivo texto onde é criado separado contendo a mensagem a ser enviada (junto com a plainha em anexo).

Desta forma que estou indicando não tem como não dar certo. Mas lembre, a configuração do SERVIDOR é feito uma única vez e eu tinha feito manualmente. Mas crie uma rotina que seja executa uma única vez através de uma BAT.

Boa sorte !

Obs.: Respondendo aqui a sua MP referente a utilização do aplicativo auxiliar para BACKUP MANUAL.PRG (que solicita a troca disquetes). A biblioteca utilizada é o CT.LIB (estava descrito no cabeçalho do MANUAL.PRG). Mas por favor, faça seus questionamentos aqui no foruma pela própria mensagens postadas. Sua perguntas e respostas irão ser úteis para os outros também.