Jump to content
Fivewin Brasil

Verificar Memória do Computador


kapiaba

Recommended Posts

Galera ajuda ahi, estou certo?



cMemoria := Trans( nExtMem(), "@E 9,999,999,999 Bytes" )


// VERIFICAR A QUANTIDADE DE MEMORIA DO COMPUTADOR
IF nExtMem() >= 3000000000 // 3 gigas - MEMORIA EXTENDIDA NECESSARIA.

// NADA A FAZER

ELSE // Menos de 3 Gigas, avisara

MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ;
OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." )+CRLF+ ;
OemToAnsi( "MEMàRIA ATUAL INSUFICIENTE: "+ cMemoria )+CRLF+ ;
OemToAnsi( "FALE COM O SEU TCNICO DE COMPUTADOR. " )+CRLF+ ;
OemToAnsi( "VEJA BOTÇO: <Manuten‡Æo> E O BOTÇO: " )+CRLF+ ;
OemToAnsi( "<Configura‡Æo Minima do Seu Computador> " )+CRLF+ ;
OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ;
OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." ) )

ENDIF


Obg. abs.

Link to comment
Share on other sites

A regra de memória é assim:

nBytes := nExtMem()

nKBytes := nBytes / 1014

nMBytes := nKBytes / 1024

nGBytes := nMBytes / 2014

Como sugestão, acredito que é mais eficiente informar o usuário em Gigas e não em bytes, mais fácil interpretar 0,3gb do que 300.000.000 bytes ... entao nesse caso a variavel cMemoria ficaria assim:

cMemoria := Trans( (nExtMem()/(1024*1024*1014)) , "@E 999.99 GB" )

ou

cMemoria := Trans( (nExtMem()/(1024*1024)) , "@E 999.99 MB" )

só como sugestão... vlw pela funcao, será muito útil...

Galera ajuda ahi, estou certo?
   cMemoria := Trans( nExtMem(), "@E 9,999,999,999 Bytes" )
 
 
   // VERIFICAR A QUANTIDADE DE MEMORIA DO COMPUTADOR
   IF nExtMem() >= 3000000000  // 3 gigas  - MEMORIA EXTENDIDA NECESSARIA.
 
      // NADA A FAZER
 
   ELSE  // Menos de 3 Gigas, avisara
 
      MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO:                           " )+CRLF+ ;
               OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." )+CRLF+ ;
               OemToAnsi( "MEMàRIA ATUAL INSUFICIENTE: "+ cMemoria      )+CRLF+ ;
               OemToAnsi( "FALE COM O SEU TCNICO DE COMPUTADOR.      " )+CRLF+ ;
               OemToAnsi( "VEJA BOTÇO: <Manuten‡Æo> E O BOTÇO:        " )+CRLF+ ;
               OemToAnsi( "<Configura‡Æo Minima do Seu Computador>    " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR...            " ),      ;
               OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." ) )
 
   ENDIF
Obg. abs.
Link to comment
Share on other sites

A regra de memória é assim:

nBytes := nExtMem()

nKBytes := nBytes / 1014

nMBytes := nKBytes / 1024

nGBytes := nMBytes / 2014

Como sugestão, acredito que é mais eficiente informar o usuário em Gigas e não em bytes, mais fácil interpretar 0,3gb do que 300.000.000 bytes ... entao nesse caso a variavel cMemoria ficaria assim:

cMemoria := Trans( (nExtMem()/(1024*1024*1014)) , "@E 999.99 GB" )

ou

cMemoria := Trans( (nExtMem()/(1024*1024)) , "@E 999.99 MB" )

só como sugestão... vlw pela funcao, será muito útil...

Very good Emotta, sugestão aceita, com uçuário é melhor não facilitar, só não say(), se alguns vão saber o o que é Giba Bytes. kkkkkkkkkkkkkkkkk

Obg. abs.

Link to comment
Share on other sites

só par constar, essa função pega a memoria utilizável, exemplo, tenho 4 gb, utilizável 3.28. e o que ela mostra 3.28, mas muito boa...mas será que hoje ainda temos empresas com computadores tão ruins assim? porem com "uçuario" nunca é demais se prevenir....

Link to comment
Share on other sites

Eduardo, ajuda ahi:


Supondo que eu queira avisar ao uçuário, que se o rWindows for 7 de 64 Bits, quero avisar que a memória minima, seja 8 Gigas, e se for rWindows 8 de 64 bits, a memória minima, seja 16 Gigas, tem jeito?



nBytes := nExtMem()

nKBytes := nBytes / 1014

nMBytes := nKBytes / 1024

nGBytes := nMBytes / 1014

cMemoria := Trans( (nExtMem()/(1024*1024*1014)) , "@E 999.99 GB" )

? cMemoria, nGBytes // 3,03 / 3,06 ??

IF nExtMem() >= nGBytes //-> MEMORIA EXTENDIDA NECESSARIA.

// NADA A FAZER

ELSE

MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ;
OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." )+CRLF+ ;
OemToAnsi( "MEMàRIA ATUAL INSUFICIENTE: "+ cMemoria )+CRLF+ ;
OemToAnsi( "FALE COM O SEU TCNICO DE COMPUTADOR. " )+CRLF+ ;
OemToAnsi( "VEJA BOTÇO: <Manuten‡Æo> E O BOTÇO: " )+CRLF+ ;
OemToAnsi( "<Configura‡Æo Minima do Seu Computador> " )+CRLF+ ;
OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ;
OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." ) )

ENDIF


Obg. abs.

Link to comment
Share on other sites

Tem jeito sim mas precisa descobrir a função que informa a versão do windows... Melhor pedir ajuda para o Linares quanto a isso...

Eduardo, ajuda ahi:
Supondo que eu queira avisar ao uçuário, que se o rWindows for 7 de 64 Bits, quero avisar que a memória minima, seja 8 Gigas, e se for rWindows 8 de 64 bits, a memória minima, seja 16 Gigas, tem jeito?
   nBytes  := nExtMem()
 
   nKBytes := nBytes / 1014
 
   nMBytes := nKBytes / 1024
 
   nGBytes := nMBytes / 1014
 
   cMemoria := Trans( (nExtMem()/(1024*1024*1014)) , "@E 999.99 GB" )
 
   ? cMemoria, nGBytes  // 3,03 / 3,06 ??
 
   IF nExtMem() >= nGBytes  //-> MEMORIA EXTENDIDA NECESSARIA.
 
      // NADA A FAZER
 
   ELSE
 
      MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO:                           " )+CRLF+ ;
               OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." )+CRLF+ ;
               OemToAnsi( "MEMàRIA ATUAL INSUFICIENTE: "+ cMemoria      )+CRLF+ ;
               OemToAnsi( "FALE COM O SEU TCNICO DE COMPUTADOR.      " )+CRLF+ ;
               OemToAnsi( "VEJA BOTÇO: <Manuten‡Æo> E O BOTÇO:        " )+CRLF+ ;
               OemToAnsi( "<Configura‡Æo Minima do Seu Computador>    " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR...            " ),      ;
               OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." ) )
 
   ENDIF
Obg. abs.
Link to comment
Share on other sites

Eduardo, veja se está de acordo, aceito mais sugestões:




nBytes := nExtMem()

nKBytes := nBytes / 1014

nMBytes := nKBytes / 1024

nGBytes := nMBytes / 1014

cMemoria := Trans( (nExtMem()/(1024*1024*1014)) , "@E 999.99 GB" )

IF IsWin8() // 15 Gb

IF nExtMem() < 15000000000
lFaltaMemoria := .T.
ENDIF

ELSEIF IsWin7() .AND. IsWin64() // 7 de 64 Bits 7 Gb

IF nExtMem() < 7000000000
lFaltaMemoria := .T.
ENDIF

ELSEIF IsWin7() .AND. .NOT. IsWin64() // 7 de 32 Bits 3 Gb

IF nExtMem() < 3000000000
lFaltaMemoria := .T.
ENDIF

ELSEIF IsWinVista() // 3 Gb

IF nExtMem() < 3000000000
lFaltaMemoria := .T.
ENDIF

ELSEIF IsWin2000() // 3 Gb

IF nExtMem() < 3000000000
lFaltaMemoria := .T.
ENDIF

ELSEIF IsWinXP()

IF nExtMem() < 3000000000
lFaltaMemoria := .T.
ENDIF

ENDIF

IF lFaltaMemoria // := .T.

MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ;
OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." )+CRLF+ ;
OemToAnsi( "MEMàRIA ATUAL INSUFICIENTE: "+ cMemoria )+CRLF+ ;
OemToAnsi( "FALE COM O SEU TCNICO DE COMPUTADOR. " )+CRLF+ ;
OemToAnsi( "VEJA BOTÇO: <Manuten‡Æo> E O BOTÇO: " )+CRLF+ ;
OemToAnsi( "<Configura‡Æo Minima do Seu Computador> " )+CRLF+ ;
OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ;
OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." ) )

lFaltaMemoria := .F.

ELSE

MsgWait( "VERIFICANDO CERTIFICADO DIGITAL DA SUA EMPRESA.", ;
"MEMORIA DO SEU COMPUTADOR " + cMemoria, 1.5 )

ENDIF




Obg. abs.

Link to comment
Share on other sites

Kapiaba, apesar de estar correto a escrita do fonte está confusa. Sugiro sempre deixar o fonte limpo e deixar o complicado separado em funções. Eu faria assim o seu código:

nBytes  := nExtMem()
 
nKBytes := nBytes / 1014
 
nMBytes := nKBytes / 1024
 
nGBytes := nMBytes / 1014
 
cMemoria := Trans( (nExtMem()/(1024*1024*1014)) , "@E 999.99 GB" )
 
nLimMem  := RetMemMinima()

If nBytes < nLimMem
      MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO:                           " )+CRLF+ ;
               OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." )+CRLF+ ;
               OemToAnsi( "MEMàRIA ATUAL INSUFICIENTE: "+ cMemoria      )+CRLF+ ;
               OemToAnsi( "FALE COM O SEU TCNICO DE COMPUTADOR.      " )+CRLF+ ;
               OemToAnsi( "VEJA BOTÇO: <Manuten‡Æo> E O BOTÇO:        " )+CRLF+ ;
               OemToAnsi( "<Configura‡Æo Minima do Seu Computador>    " )+CRLF+ ;
               OemToAnsi( "TECLE <ENTER> PARA CONTINUAR...            " ),      ;
               OemToAnsi( "NECESSµRIO AUMENTAR A MEMàRIA DO SEU MICRO." ) )
Else
      MsgWait( "VERIFICANDO CERTIFICADO DIGITAL DA SUA EMPRESA.", ;
               "MEMORIA DO SEU COMPUTADOR " + cMemoria, 1.5 )
EndIf




Function RetMemMinima()
Local nMem := 3000000000

IF IsWin8()                            // 15 Gb
    nMem := 15000000000
ELSEIF IsWin7() .AND. IsWin64()        // 7 de 64 Bits 7 Gb
    nMem := 7000000000
ELSEIF (IsWin7() .AND. .NOT. IsWin64()) .or. IsWinVista() .or. IsWin2000() .or. IsWinXP() // 7 de 32 Bits 3 Gb
    nMem := 3000000000
ENDIF
Return nMem
Link to comment
Share on other sites

  • 10 months later...

Para samir - Sambomb.

#include "FiveWin.ch"
 
function Main()
 
   LOCAL cMemoria, nBytes, nKBytes, nMBytes, nGBytes
 
   nBytes  := nExtMem()
 
   nKBytes := nBytes / 1014
 
   nMBytes := nKBytes / 1024
 
   nGBytes := nMBytes / 1014
 
   // Com erro - With Error
   //  aAdd( ::aTexto,"Memória: " + cValToChar( Int( nExtMem() / ( 1024 * 1024 ) ) + 1 ) + " MBs" )
   ? ( "Memóry Error: " + cValToChar( Int( nExtMem() / ( 1024 * 1024 ) ) + 1 ) + " MBs" )
 
   ? cMemoria := Trans( nExtMem(), "@E 9,999,999,999 Bytes free" )
 
   ? cMemoria := Trans( ( nExtMem() / ( 1024 * 1024 * 1014 ) ), "@E 999.99 GB Free" )
 
                                                       // or .97 = 4 Gbs.
   ? cMemoria := Trans( ( nExtMem() / ( 1024 * 1024 * 1014 ) + 1 ), "@E 999.99 GB Total" )
 
RETURN NIL
 
// END OF PROGRAM
Link to comment
Share on other sites

Para samir - Sambomb.

#include "FiveWin.ch"
 
function Main()
 
   LOCAL cMemoria, nBytes, nKBytes, nMBytes, nGBytes
 
   nBytes  := nExtMem()
 
   nKBytes := nBytes / 1014
 
   nMBytes := nKBytes / 1024
 
   nGBytes := nMBytes / 1014
 
   // Com erro - With Error
   //  aAdd( ::aTexto,"Memória: " + cValToChar( Int( nExtMem() / ( 1024 * 1024 ) ) + 1 ) + " MBs" )
   ? ( "Memóry Error: " + cValToChar( Int( nExtMem() / ( 1024 * 1024 ) ) + 1 ) + " MBs" )
 
   ? cMemoria := Trans( nExtMem(), "@E 9,999,999,999 Bytes free" )
 
   ? cMemoria := Trans( ( nExtMem() / ( 1024 * 1024 * 1014 ) ), "@E 999.99 GB Free" )
 
                                                       // or .97 = 4 Gbs.
   ? cMemoria := Trans( ( nExtMem() / ( 1024 * 1024 * 1014 ) + 1 ), "@E 999.99 GB Total" )
 
RETURN NIL
 
// END OF PROGRAM

Obrigado, vou testar aqui.

Link to comment
Share on other sites

O que o pessoal não está entendendo, é que as máquinas evoluiram e precisa aumentar a memória RMA ou então, migrar para HARBOUR, pois conforme o Liñares em HARBOUR os problemas de memória quase não existem. Mas, não testei...

http://www.4shared.com/zip/FoiQ9jCece/TESTMEM4.html

Precisa de uma conta no www.4shared,com

Quem usa HABROUR. pode opinar, porfa?

abs

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...