kapiaba Posted March 30, 2015 Report Share Posted March 30, 2015 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted March 30, 2015 Report Share Posted March 30, 2015 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. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 30, 2015 Author Report Share Posted March 30, 2015 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted March 30, 2015 Report Share Posted March 30, 2015 Só tem uma correção, no giga eu digitei errado: o coreto é: nGBytes := nMBytes / 1014 Quote Link to comment Share on other sites More sharing options...
aferra Posted March 30, 2015 Report Share Posted March 30, 2015 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.... kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 31, 2015 Author Report Share Posted March 31, 2015 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted March 31, 2015 Report Share Posted March 31, 2015 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. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 31, 2015 Author Report Share Posted March 31, 2015 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted March 31, 2015 Report Share Posted March 31, 2015 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 kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 31, 2015 Author Report Share Posted March 31, 2015 Very good, sugestão aceita. O que abunda não prejudica. kkkkkkkkkkkkk Duas kbças, pensam melhor que uma... ou não.... Obg. abs. Quote Link to comment Share on other sites More sharing options...
emotta Posted March 31, 2015 Report Share Posted March 31, 2015 kkkkkkk depende da situação.... kk abraços Very good, sugestão aceita. O que abunda não prejudica. kkkkkkkkkkkkk Dua kbças, pensam melhor que uma... ou não.... Obg. abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 24, 2016 Author Report Share Posted February 24, 2016 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 sambomb 1 Quote Link to comment Share on other sites More sharing options...
sambomb Posted February 25, 2016 Report Share Posted February 25, 2016 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. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 2, 2016 Author Report Share Posted March 2, 2016 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.