Página 1 de 1

LER VARIÁVEIS DE AMBIENTE

Enviado: 21 Fev 2008 15:05
por Marsenne
Recentemente um programa alterou o autoexec.bat onde defino algumas variáveis do clipper como a quantidade de arquivos que podem ser abertos. Quero que meu sistema, na inicialização, possa ler as variáveis do Sistema Operacional para verificar se não foram alteradas. Existe alguma função que eu possa verificar isto? Se não, existe uma forma de ler o arquivo .bat e verificar se ele está correto?

Enviado: 21 Fev 2008 15:11
por sygecom
Apenas lembrando que caso houver alteração em 98 tem que reiniciar o micro, e em XP deve apenas reiniciar o sistema(comigo funciona 100%)

Código: Selecionar todos

***************
Function AJUSTA
***************
vWIN=0
IF File("C:\CONFIG.SYS")                  //WIN98 E 95
   vWIN=1
ENDIF
IF File("C:\WINDOWS\SYSTEM32\CONFIG.NT")  // WIN XP
   vWIN=2
ENDIF
IF File("C:\WINNT\SYSTEM32\CONFIG.NT")   // WIN 2000
   vWIN=3
ENDIF

fflag := .t. // flag para FILES
cflag := .t. // flag para BUFFERS
cline:=''

IF vWIN=1
   fhandle := fopen("C:\CONFIG.SYS")
   d_arq = fcreate("C:\CONFIG.BAK",0)  // back-up
ELSEIF vWIN=2
   fhandle := fopen("C:\WINDOWS\SYSTEM32\CONFIG.NT")
   d_arq = fcreate("C:\CONFIG.BAK",0)
ELSEIF vWIN=3
   fhandle := fopen("C:\WINNT\SYSTEM32\CONFIG.NT")
   d_arq = fcreate("C:\CONFIG.BAK",0)  // back-up
ENDIF

do whil freadln(fhandle,@cline,LINE_SIZE)
   if 'FILES'$uppe(cline)
      cline := 'FILES=100'
      fflag := .f.
   elseif 'BUFFERS'$uppe(cline)
      cline := 'BUFFERS=30'
      cflag := .f.
   endif
   fwriteln(d_arq,cline)
enddo
if fflag
   fwriteln(d_arq,'FILES=100')
endi
if cflag
   fwriteln(d_arq,'BUFFERS=30')
endi

fclose(fhandle)
fclose(d_arq)

IF vWIN=1
   COPY FILE C:\CONFIG.BAK TO C:\CONFIG.SYS
ELSEIF vWIN=2
   COPY FILE C:\CONFIG.BAK TO C:\WINDOWS\SYSTEM32\CONFIG.NT
ELSEIF vWIN=3
   COPY FILE C:\CONFIG.BAK TO C:\WINNT\SYSTEM32\CONFIG.NT
ENDIF

IF vWIN=1
   fhandle := fopen("C:\AUTOEXEC.BAT")
   d_arq = fcreate("C:\AUTOEXEC.BAK",0)
ELSEIF vWIN=2
   fhandle := fopen("C:\WINDOWS\SYSTEM32\AUTOEXEC.NT")
   d_arq = fcreate("C:\AUTOEXEC.BAK",0)
ELSEIF vWIN=3
   fhandle := fopen("C:\WINNT\SYSTEM32\AUTOEXEC.NT")
   d_arq = fcreate("C:\AUTOEXEC.BAK",0)
ENDIF

do whil freadln(fhandle,@cline,LINE_SIZE)
   if 'SET PLL='$uppe(cline)
   elseif 'SET CLIPPER='$uppe(cline)
   elseif 'IF NOT EXIST C:\TEMP MD C:\TEMP'$uppe(cline)
   else
      fwriteln(d_arq,cline)
   endi
enddo
fwriteln(d_arq,'IF NOT EXIST C:\TEMP MD C:\TEMP')
fwriteln(d_arq,'SET CLIPPER=//F:121//DYNF:8//BADCACHE//SWAPK:65535//SWAPPTAH:"C:\TEMP"//TEMPPATH:"C:\TEMP"')
fclose(fhandle)
fclose(d_arq)

IF vWIN=1
   COPY FILE C:\AUTOEXEC.BAK TO C:\AUTOEXEC.BAT
ELSEIF vWIN=2
   COPY FILE C:\AUTOEXEC.BAK TO C:\WINDOWS\SYSTEM32\AUTOEXEC.NT
ELSEIF vWIN=3
   COPY FILE C:\AUTOEXEC.BAK TO C:\WINNT\SYSTEM32\AUTOEXEC.NT
ENDIF
return nil

Enviado: 21 Fev 2008 15:40
por Clipper
Prezado Colega

Se você preferir pode também usar o Blinker para linkar seu sistema e esquecer esse problema de sempre ter que configurar o AUTOEXEC e CONFIG e serve para qualquer versão, basta no seu scrip de linkagem usar :

BLINKER EXECUTABLE CLIPPER //F:240 //DYNF:8

ou se preferir usar seus próprios ajustes.

Usando assim você nunca mais precisará se procupar com isso, além das outras vantagens do uso do Blinker.

Ps. Se você usa a versão 5.3 do Clipper o Exospace também tem uma opção semelhante.

Até logo.

Marcelo

LER VARIÁVEIS DE AMBIENTE

Enviado: 21 Fev 2008 15:44
por Marsenne
Eu utilizo o RTLINK até hoje pois não entendo do BLINKER. Existe alguma documentação em português do BLINKER e onde posso baixá-lo?

Re: LER VARIÁVEIS DE AMBIENTE

Enviado: 21 Fev 2008 16:30
por Maligno
Marsenne escreveu:Eu utilizo o RTLINK até hoje pois não entendo do BLINKER. Existe alguma documentação em português do BLINKER e onde posso baixá-lo?
Para baixar o BLinker, clique aqui. A documentação está junto na forma forma de um HLP, que é em inglês. Não adianta querer fugir do inglês. Vai ter que encarar um dia. :)

Enviado: 21 Fev 2008 16:31
por Clipper
Prezado Colega

Vou postar um Script padrão, aí é só você adaptar ao seu sistema e correr pro abraço.

Código: Selecionar todos

BLINKER INCREMENTAL OFF
BLINKER OVERLAY PAGEFRAME ON
BLINKER EXECUTABLE CLIPPER //F:200 //DYNF:8 //E:1024
BLINKER EXECUTABLE NODELETE
BLINKER EXECUTABLE COMPRESS 9
BLINKER EXECUTABLE EXTENDED
NOBELL
OUTPUT C:\BR\SISTEMA 
#acima o nome do executavel que sera gerado se for omitido será
#o nome do programa principal e será gerado na mesma pasta

BEGINAREA  
   FILE SISETMA
   FILE FUNCOES
   FILE UTIL
   FILE __WAIT
   FILE TIMESLIC
   FILE FULLSCRN
ENDAREA
#Acima você deverá especificar cada OBJ da sua aplicação
LIB C:\CLIPPER5\LIB\VL2_52
LIB C:\CLIPPER5\LIB\BLXCLP52
LIB C:\CLIPPER5\LIB\CLIPPER
LIB C:\CLIPPER5\LIB\EXTEND
LIB C:\CLIPPER5\LIB\TERMINAL
LIB C:\CLIPPER5\LIB\DBFNTX
#Acima você deve especificar as LIBs que são usadas na sua aplicação
#As que são padrão do clipper não precisam ser especificadas
#Mas neste caso você terá que ter a linha SET LIB no AUTOEXEC

O caractere # é usado para inserir um comentário no arquivo de script
Segue abaixo onde baixar o NG do Blinker 4.0, mas funciona muito bem para qualquer versão.
http://www.whitetown.com/ng/blinker4.zip

Até logo.

Marcelo

Enviado: 21 Fev 2008 16:38
por Maligno
Clipper escreveu:Se você preferir pode também usar o Blinker para linkar seu sistema e esquecer esse problema de sempre ter que configurar o AUTOEXEC e CONFIG e serve para qualquer versão, basta no seu scrip de linkagem usar :

BLINKER EXECUTABLE CLIPPER //F:240 //DYNF:8

ou se preferir usar seus próprios ajustes.
Marcelo, conforme diz o help do BLinker (vide o help do comando), não será possível usar esse valor de 240 se não houver no CONFIG.SYS um valor maior ou igual a este. Portanto, não dá pra escapar de ajustar o CONFIG. Isso é compreensível, haja vista que o valor de FILES é uma variável de ajuste do SO. O BLinker não tem como aumentar isso por sua própria conta. Só pode diminuir.

Enviado: 21 Fev 2008 23:16
por Clipper
Prezado Maligno

Eu sabia desse detalhe é que me esqueci, faz tanto tempo que não tenho esse tipo de problema.

Mas como eu não acredito muito no Windows (vide abaixo o motivo), fui testar e realmente dá pau.

Motivo pra eu não acreditar em tudo que o Windows diz :
No AUTOEXEC.NT do XP é informado que o XP não processa o AUTOEXEC.BAT, mentira ! O XP processa normalmente o AUTOEXEC.BAT sem que seja necessária qualquer ateração no XP.

Até logo.

Marcelo

Enviado: 21 Fev 2008 23:32
por Maligno
Clipper escreveu:Motivo pra eu não acreditar em tudo que o Windows diz :
No AUTOEXEC.NT do XP é informado que o XP não processa o AUTOEXEC.BAT, mentira ! O XP processa normalmente o AUTOEXEC.BAT sem que seja necessária qualquer ateração no XP.
Ah, sim. É quase igual ao caso da efetivação da alteração do AUTOEXEC.NT no XP. Há quem altere o AUTOEXEC.NT e ele já faz diferença na próxima sessão DOS aberta. Pra mim não dá. Tenho que rebootar. Por essas e outras, não mexo mais nisso. Variáveis de ambiente eu altero diretamente no Registry.

Enviado: 27 Fev 2008 12:20
por clauber
caro maligno, como poderia eu acessar os dados do registy usando o clipper, com blinker....

Enviado: 27 Fev 2008 14:03
por Maligno
A alteração que disse que faço é manual mesmo. Tenho um arquivo pronto pra isso. É só clicar. Mas pelo Clipper também dá pra acessar o Registry usando a biblioteca WAPI. Clique aqui para ver a thread que temos a respeito dela.