-
Posts
1,951 -
Joined
-
Last visited
-
Days Won
10
Reputation Activity
-
sambomb got a reaction from kapiaba in Disponível para trabalho home office
Já consegui uma vaga, obrigado a todos que enviaram mensagens
-
-
sambomb got a reaction from Theotokos in Conteudo de uma Matriz
aArray := {"002", "SAMIR", "TESTE"}
? aScan(aArray,"001") //-- 0
? aScan(aArray,"002") //-- 1
? aScan(aArray,"003") //-- 0
? aScan(aArray,"SAMIR") //-- 2
? aScan(aArray,"TESTE") //-- 3
aArray := {{"001", "SAMIR", "TESTE"},{"002", "JOAO", "TESTA"}}
? aScan(aArray,{|X| X[1] = "001"}) //-- 1
? aScan(aArray,{|X| X[1] = "002"}) //-- 2
? aScan(aArray,{|X| X[2] = "SAMIR"}) //-- 2
? aScan(aArray,{|X| X[2] = "JOAO"}) //-- 2
? aScan(aArray,{|X| X[3] = "TESTE"}) //-- 1
? aScan(aArray,{|X| X[3] = "TESTA"}) //-- 2
-
sambomb got a reaction from kapiaba in Como descobrir senha Wi-fi do vizinho
Perguntar costuma ser mais rápido
-
sambomb got a reaction from kapiaba in Como remover o ícone Baixe o Windows 10 da bandeja do sistema
Tem outro modo: Instale o windows 10
-
-
-
-
sambomb reacted to kapiaba in Verificar Memória do Computador
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 got a reaction from kapiaba in Reiniciar um programa após o fechamento
CmdRun({"taskkill /f /im programa.exe", DirExe()+"programa.exe"})
****************************************************************************
function CmdRun(xLinhaComando, bEval, lExibe)
****************************************************************************
*
* Rodar uma linha de comando no prompt do DOS
* Parametros: xLinhaComando
* Retorno: Nenhum
*
* Autor: Samir
* 06/12/2011 - 09:33:25
*
****************************************************************************
local cFileBat := "", cTextoBat := "", i := 0, lResult := .F.
Default lExibe := .F.
//-- Verifica se é uma única linha
If ValType(xLinhaComando) = "C"
cTextoBat := xLinhaComando
//-- Verifica se são múltiplas linhas
elseIf ValType(xLinhaComando) = "A"
For i := 1 to Len(xLinhaComando)
if !Empty(cTextoBat)
cTextoBat += CRLF
end
cTextoBat += xLinhaComando
end
//-- Tratamento para parâmetro inválido
else
MsgInfo("Parâmetro inválido","CMDRUN")
Return lResult
end
//-- Gerar o nome do arquivo bat a ser executado
cFileBat := DirExe() + "CMDRUN_"+DToS(Date())+"_"+StrTran(Now(),":") + ".BAT"
//-- Roda um loop para apagar o arquivo
i := 0
While File(cFileBat)
SysRefresh()
If fErase(cFileBat) != 0
SysWait(1)
//-- 3 tentativas "silenciosas"
If i < 3
i++
loop
end
//-- Mensagem de erro
If MsgYesNo("Erro " + UT( fError() ) + " ao apagar o arquivo: " + CRLF +;
cFileBat + CRLF + "Tentar novamente")
loop
else
exit
end
else
exit
end
end
//-- Se o arquivo não existe
If !File(cFileBat)
//-- Tenta criar o arquivo bat
If CreateTxt(cFileBat,cTextoBat)
//-- Verifica se criou
i := 0
While !File(cFileBat)
SysRefresh()
SysWait(1)
//-- 3 tentativas "silenciosas"
If i < 3
i++
loop
end
If MsgYesNo("Arquivo ainda não foi criado " + CRLF + "Deseja aguardar")
loop
else
exit
end
end
//-- Verifica se o arquivo foi criado com sucesso
If File(cFileBat)
lResult := .T.
//-- Executa o BAT
If lExibe
WaitRun(cFileBat,1)
else
WaitRun(cFileBat,0)
end
//-- Caso tenha sido passada uma validação, executa
If ValType(bEval) = "B"
lResult := Eval(bEval)
end
end
//-- Apaga o arquivo BAT para não deixar resíduos
i := 0
While File(cFileBat)
SysRefresh()
If fErase(cFileBat) != 0
SysWait(1)
//-- 3 tentativas "silenciosas"
If i < 3
i++
loop
end
If MsgYesNo("Erro " + UT( fError() ) + " ao apagar o arquivo: " + CRLF +;
cFileBat + CRLF + "Tentar novamente")
loop
else
exit
end
else
exit
end//If fErase(cFileBat) != 0
end//While File(cFileBat)
end//If CreateTxt(cFileBat,cTextoBat)
end//If !File(cFileBat)
Return lResult
/*------------------------------------------------------------------------*/
****************************************************************************
Function DirExe()
****************************************************************************
*
* Pegar o caminho aonde se encontra o executavel
* Parametros:
* Retorno: cDir
*
* Autor: Samir
* 18/5/2009 - 09:55:56
*
****************************************************************************
local cDir := cFilePath( GETMODULEFILENAME( GETINSTANCE() ) )
If Right(cDir,1) != "\"
cDir += "\"
end
Return cDir
/*------------------------------------------------------------------------*/
****************************************************************************
function UT(cStr)
****************************************************************************
*
* Remover os espaços excedentes e forçar caixa alta
* Parametros: cStr
* Retorno: cStrFormatado
*
* Autor: Samir
* 7/4/2009 - 09:55:35
*
****************************************************************************
local cStrFormatado := ""
If ValType(cStr) = "N"
cStrFormatado := Str(cStr)
elseif ValType(cStr) = "C"
cStrFormatado := cStr
elseif ValType(cStr) = "U"
cStrFormatado := ""
elseif ValType(cStr) = "A"
cStrFormatado := "Matriz"
else
cStrFormatado := ""
end
cStrFormatado := AllTrim(Upper(cStrFormatado))
Return cStrFormatado
/*------------------------------------------------------------------------*/ -
sambomb reacted to toya in Enquete: Curso de xHabour/FiveWin/SQL
Pois é, como nos velhos tempos...
"O Clipper não morreu..."
Minhas rotinas "lusitanas" estarão a disposição dos colegas aprendizes...
-
-
-
sambomb got a reaction from evertonlb in Posso mudar o "Say" cada vez que foco um get diferente? RESOLVIDO
Fora isso:
Procedure RedefinirGet( nGet ) Redefine Get oGet[nGet]; var cGet[nGet]; Update; ID 100 + nGet; Of oDlg oGet[nGet]:Cargo := "Get " + AllTrim( Str( nGet ) ) oGet[nGet]:bGotFocus := {|| oSay:SetText( oGet[nGet]:Cargo ) } Return -
sambomb got a reaction from kapiaba in Classe para tratar XML
Tratar como texto eu já imagino uma solução, mas queria uma solução similar a que já está implementada, caso não exista outra forma eu vou partir para o tratamento do texto, mas queria algo mais sofisticado e simples de implementar.
-
sambomb reacted to rochinha in Classe para tratar XML
Amiguinhos,
Vou reproduzir um post de 2009 que dá uma alusão mais direta a necessidade do forense sambomb.
Quem não conhece o termo EDI, Eletronic Data Interchange, termo bonito para o que conhecemos como transferência de arquivos.
No meu caso uso em meu sistema para fazer envio de informações entre filiais de meus clientes.
Para tanto faço uso de arquivos formatados em .XML e só mudo a extensão para diferenciar e não misturar com os tantos arquivos manipulados pelo mesmo.
No exemplo a seguir simulo a geração de um arquivo contendo dados de um cliente e os itens de seu orçamento, que depois de tratados pelo modulo de recebimento atualiza/inclui o cliente no cadastro e inclui um pedido na carteira de vendas.
Vejam que o codigo é bem limpo, e de fácil assimilação e o .XML gerado segue uma estrutura bem definida.
Para gerar a primeira parte usei a classe TXMLWrite( Fred ) e fiz pequeninas mudanças para continuar usando a classe original para outras coisas.
A segunda parte do exemplo apresenta como interpretar um conteudo .XML e obter as informações. Para isto é necessário que o MS XML Toolkit ou MSXML4 esteja instalado.
/*
*
* Teste de integracao XML atraves de arquivos EDX
*
*/
#include "FiveWin.ch"
#include "edx.ch"
#define CR Chr(13)
#define LF Chr(10)
#define BS "\"
Function main()
LOCAL cEDX, cHomeDir
LOCAL cFile, cDOCFile, cXMLFile
PUBLIC oEDX
cXMLFile := "TESTEDX.EDX"
if ! file( cXMLFile )
EDX oEDX FILE cXMLFile FORMATED
EDX OPEN MARK "pedido" ATTRIB "Database" VALUE "25709" OF oEDX
EDX OPEN MARK "cliente" ATTRIB "idcliente" VALUE "803" OF oEDX
EDX OPEN MARK "nome" TYPE "" TAG "JOSE CARLOS DA ROCHA" AUTOCLOSE OF oEDX
EDX OPEN MARK "endereco" TYPE "" TAG "RUA DR MARIO MAURO RAMOS MATTOSO 50" AUTOCLOSE OF oEDX
EDX OPEN MARK "bairro" TYPE "" TAG "PIRITUBA" AUTOCLOSE OF oEDX
EDX OPEN MARK "cidade" TYPE "" TAG "SAO PAULO" AUTOCLOSE OF oEDX
EDX OPEN MARK "estado" TYPE "" TAG "SP" AUTOCLOSE OF oEDX
EDX OPEN MARK "cep" TYPE "" TAG "05171-340" AUTOCLOSE OF oEDX
EDX OPEN MARK "telefone" TYPE "" TAG "(011)3534-3099" AUTOCLOSE OF oEDX
EDX OPEN MARK "cgc" TYPE "" TAG "000.000.000-000" AUTOCLOSE OF oEDX
EDX OPEN MARK "inscr" TYPE "" TAG "00.000.000" AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // cliente
//
EDX OPEN MARK "item" ATTRIB "Numero" VALUE "1" OF oEDX
EDX OPEN MARK "dataped" TYPE "" TAG "20080926" AUTOCLOSE OF oEDX
EDX OPEN MARK "resumido" TYPE "" TAG "AC1000" AUTOCLOSE OF oEDX
EDX OPEN MARK "descricao" TYPE "" TAG "PRODUTO AC 1000" AUTOCLOSE OF oEDX
EDX OPEN MARK "quantidade" TYPE "" TAG "1.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "valor" TYPE "" TAG "13.600" AUTOCLOSE OF oEDX
EDX OPEN MARK "desconto" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "medidas" OF oEDX
EDX OPEN MARK "largura" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "altura" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "compriment" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // medidas
EDX CLOSE MARK OF oEDX // item
//
EDX OPEN MARK "item" ATTRIB "Numero" VALUE "2" OF oEDX
EDX OPEN MARK "dataped" TYPE "" TAG "20081214" AUTOCLOSE OF oEDX
EDX OPEN MARK "resumido" TYPE "" TAG "AC1020" AUTOCLOSE OF oEDX
EDX OPEN MARK "descricao" TYPE "" TAG "PRODUTO AC 1020" AUTOCLOSE OF oEDX
EDX OPEN MARK "quantidade" TYPE "" TAG "3.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "valor" TYPE "" TAG "5.400" AUTOCLOSE OF oEDX
EDX OPEN MARK "desconto" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "medidas" OF oEDX
EDX OPEN MARK "largura" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "altura" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX OPEN MARK "compriment" TYPE "" TAG "0.000" AUTOCLOSE OF oEDX
EDX CLOSE MARK OF oEDX // medidas
EDX CLOSE MARK OF oEDX // item
EDX CLOSE MARK OF oEDX // pedido
EDX END oEDX
//
endif
cMethod := "POST"
cURL := "http://www.f2b.com.br/WSBilling"
oEDXSend := TOLEAuto():New( "Microsoft.XMLHTTP" )
//oEDXSend:Open( cMethod, cURL, .F. )
//oEDXSend:Send( cXMLFile )
//cEDXBuffer := oEDXSend:ResponseText
cHomeDir := CurDrive() + ":" + BS + CurDir() + BS
cFile := cHomeDir + cXMLFile
oXMLDoc := TOLEAUTO():New("Microsoft.XMLDOM")
oXMLDoc:async := .f.
lSuccess := oXMLDoc:load( cXMLFile )
if lSuccess
x := oXMLDoc:getElementsByTagName( "cliente" )
? oXMLDoc:getElementsByTagName( "nome" ):Item(0):Text , ;
oXMLDoc:getElementsByTagName( "endereco" ):Item(0):Text, ;
oXMLDoc:getElementsByTagName( "bairro" ):Item(0):Text , ;
oXMLDoc:getElementsByTagName( "cidade" ):Item(0):Text , ;
oXMLDoc:getElementsByTagName( "estado" ):Item(0):Text , ;
oXMLDoc:getElementsByTagName( "cep" ):Item(0):Text , ;
oXMLDoc:getElementsByTagName( "telefone" ):Item(0):Text, ;
oXMLDoc:getElementsByTagName( "cgc" ):Item(0):Text , ;
oXMLDoc:getElementsByTagName( "inscr" ):Item(0):Text
x := oXMLDoc:getElementsByTagName( "item" )
for i = 1 to x:length
? oXMLDoc:getElementsByTagName( "dataped" ):Item(i-1):Text , ;
oXMLDoc:getElementsByTagName( "descricao" ):Item(i-1):Text , ;
oXMLDoc:getElementsByTagName( "resumido" ):Item(i-1):Text , ;
oXMLDoc:getElementsByTagName( "quantidade" ):Item(i-1):Text, ;
oXMLDoc:getElementsByTagName( "valor" ):Item(i-1):Text , ;
oXMLDoc:getElementsByTagName( "desconto" ):Item(i-1):Text
next
else
? "erro de abertura"
endif
return nil
#include "edx.prg"
Para completar o exemplo segue os codigos de suporte, EDX.CH:
#xcommand EDX <oEDX> FILE <cOut> ;
[ VERSION <cVer> ] ;
[ ENCODING <cEncode> ] ;
[ STYLESHEET <cSheet> ] ;
[ <lFormated:FORMATED> ];
=> ;
<oEDX> := TEDXWrite():New( <cOut>, <cVer>, <cEncode>, <cSheet>, <.lFormated.> )
#xcommand EDX OPEN MARK <cMark> [ TYPE <cType> ] ;
[ ATTRIB <cAttrib1> VALUE <uVal1> ;
[ ATTRIB <cAttrib2> VALUE <uValN> ]] ;
[ EXTENDED <uExt> ] ;
[ TAG <cTag> ] ;
[ <lAutoClose:AUTOCLOSE> ];
<of: OF> <oEDX> ;
=> ;
<oEDX>:Open( <cMark>, <cType>,;
{ [ { <cAttrib1> ,<uVal1> } ] [, { <(cAttrib2)> ,<(uValN)>} ] },;
<cTag>, <.lAutoClose.>, <uExt>)
#xcommand EDX CLOSE MARK <of: OF> <oEDX> ;
=> ;
<oEDX>:Close( )
#xcommand EDX SEND <cXMLDoc> ;
URL <cURL> ;
METHOD <cMethod> ;
<of: OF> <oEDX> ;
=> ;
<oEDX>:Send( <cMethod>, <cURL>, <cXMLDoc> )
#xcommand EDX END <oEDX> ;
=> ;
<oEDX>:End()
Codigo da classe, EDX.PRG:
*******************************************************************************
* Pruebas para la creacion de fichero xml desde fivewin *
* 01 - 05 - 2002 *
* Enviarme vuestras dudas y sugerencias a fredy@airtel.net *
*******************************************************************************
#include "objects.ch"
#include "fileio.ch"
#xcommand DEFAULT <uVar1> := <uVal1> ;
[, <uVarN> := <uValN> ] => ;
If( <uVar1> == nil, <uVar1> := <uVal1>, ) ;;
[ If( <uVarN> == nil, <uVarN> := <uValN>, ); ]
CLASS TEDXWRITE
DATA hFile, lFormated, cCRLF, aMark
METHOD New( cOut, cVer, cEncode, cSheet, lFormated ) CONSTRUCTOR
METHOD Open( cMark, cType, aAttrib, cTag, lClose, cExt )
METHOD End()
METHOD Procesar( cText )
METHOD Send( cMethod, cURL, cXMLDoc )
METHOD Close()
ENDCLASS
METHOD New( cOut, cVer, cEncode, cSheet, lFormated ) CLASS TEDXWRITE
DEFAULT cVer := "1.0"
DEFAULT cEncode := "ISO-8859-1"
//DEFAULT
::lFormated := .t.
::cCRLF := If( lFormated, Chr(13)+Chr(10), "" )
::aMark := {}
::hFile := FCreate( AllTrim( cOut ), 0 )
::Procesar( '<?xml version="' + cVer + '" encoding="' + cEncode + '"?>' )
IF !Empty( cSheet )
::Procesar( '<?xml-stylesheet href="'+ AllTrim( cSheet ) + '" Type="text/xsl"?>' )
END IF
Return( Self )
METHOD Open( cMark, cType, aAttrib, cTag, lClose, cExt ) CLASS TEDXWRITE
Local n, cBuffer
DEFAULT cTag := ""
DEFAULT cType := ""
DEFAULT cExt := ""
aAdd( ::aMark, cMark )
cBuffer := '<' + cMark
//IF Len( ::aMark ) == 1
// cBuffer += ' xmlns:dt="urn:schemas-microsoft-com:datatypes"'
// xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
// xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
//END IF
IF !Empty( cType )
cBuffer += ' dt:dt= "' + cType + '"'
END IF
IF Len( aAttrib ) > 0
FOR n := 1 TO Len( aAttrib )
cBuffer += ' '+ aAttrib[n,1] + ' = "' + aAttrib[n,2] + '" '
NEXT
END IF
cBuffer += '>' + alltrim( cTag ) + If( lClose, '</' + cMark + '>' , "" )
::Procesar( cBuffer )
IF lClose
aSize( ::aMark, Len( ::aMark ) -1 )
END IF
METHOD Close() CLASS TEDXWRITE
::Procesar( "</" + ::aMark[ Len( ::aMark ) ] + ">" )
aSize( ::aMark, Len( ::aMark ) -1 )
METHOD End() CLASS TEDXWRITE
::Procesar( "" ) // "</xml>" )
FClose( ::hFile )
METHOD Send( cMethod, cURL, cXMLDoc ) CLASS TEDXWRITE
oEDXSend := TOLEAuto():New( "Microsoft.XMLHTTP" )
oEDXSend:Open( cMethod, cURL, .F. )
oEDXSend:Send( cXMLDoc )
//cEDXBuffer := oEDXSend:ResponseText
return "" // cEDXBuffer
METHOD Procesar( cBuffer ) CLASS TEDXWRITE
Local nSpaces := If( ::lFormated, Len( ::aMark ), 0 )
cBuffer := Space( nSpaces )+ cBuffer + ::cCRLF
FWrite( ::hFile, cBuffer, Len( cBuffer ) )
return
-
sambomb reacted to rochinha in Classe para tratar XML
Amiguinhos,
Vejamos o tratamento que dariamos ao .XML em questão usando as dicas acima:
... <segmento> <detalhes> ... </detalhes> <saida> ... </saida> <entrada> ... </segmento> <segmento> ... Exemplificando:
oXMLDoc := TOLEAUTO():New("Microsoft.XMLDOM") oXMLDoc:async := .f. lSuccess := oXMLDoc:load( cXMLFile ) if lSuccess ... // Farei a leitura de quantos segmentos houverem nSegmentos := oXMLDoc:getElementsByTagName( "segmento" ) for i = 1 to nSegmentos:length ... // Pega XML do trecho cXMLDetalhes := oXMLDoc:getElementsByTagName( "Detalhes" ):Item(i-1):xml ... // Dou tratamento ao xml resgatado em cXMLDetalhes ... cXMLSaida := oXMLDoc:getElementsByTagName( "Saida" ):Item(i-1):xml ... // Dou tratamento ao xml resgatado em cXMLSaida ... cXMLEntrada := oXMLDoc:getElementsByTagName( "Entrada" ):Item(i-1):xml ... // Dou tratamento ao xml resgatado em cXMLEntrada ... Outra coisa que se deve levar em consideração é o fato de uma tag não existir no .XML, por padrão ao escrever o conteúdo de um arquivo assim é melhor que exista conteúdo, mas muitas vezes encontramos "lixo" que nos atrapalham como <TagIncompleta /> ou <TagVazia></TagVazia>. Nos dois caso só nos faz perder tempo em processamento mas ainda assim devemos tratar e para tal é necessário criticar se a tag existe.
Neste caso posso fazer de duas formas:
Via DOM:
... cXMLDoc := MemoRead( cEDXFile ) oXMLDoc := TOLEAUTO():New("Microsoft.XMLDOM") oXMLDoc:async := .f. lSuccess := oXMLDoc:load( cEDXFile ) if lSuccess oteste := oXMLDoc:getElementsByTagName( "segmento" ) lExisteTagDetalhes := CriticaTagName( "detalhes", oXMLDoc, cXMLDoc ) lExisteTagSaida := CriticaTagName( "saida", oXMLDoc, cXMLDoc ) ... Function CriticaTagName( _tagName_, oXMLDoc, cXMLDoc ) if upper( "<"+_tagName_+">" ) $ upper( cXMLDoc ) _cTagName_ := oXMLDoc:getElementsByTagName( _tagName_ ):Item(0):Text else _cTagName_ := "" endif return _cTagName_ Via STRING:
... cXMLDoc := MemoRead( cEDXFile ) if ! empty( cXMLDoc ) lExisteTagDetalhes := ValidaXMLField( "Detalhes", cXMLDoc ) lExisteTagSaida := ValidaXMLField( "Saida" , cXMLDoc ) ... function ValidaXMLField( _XMLField_, _XMLFile_ ) return iif( AT( "<"+_XMLField_+">", _XMLFile_ ) > 0, .t., .f. ) -
sambomb got a reaction from kapiaba in Apresentando fivedit de FiveTech
Invejei!
Queria um update mas ta dificil de desembolsar dinheiro...
-
sambomb got a reaction from kapiaba in Como atualizar o código da versão em .RES automaticamente? [Resolvido]
Com -r agora funcionou!
Muito obrigado, agora é só fazer a edição do arquivo RC automaticamente!
-
sambomb got a reaction from kapiaba in Quem é melhor Filedelete() ou Ferase()?
fErase é de nível mais baixo, o que eu considero que seja uma vantagem pois tem um número menor de fatores que podem causar problemas.
-
sambomb got a reaction from kapiaba in Remover(Excluir) um Diretório(Pasta)
FUNCTION EliminaDir(cDir)
If IsDir(cDir)
WinExec("RD " + cDir + " /S",0)
Else
? "Diretório " + cDir + " inválido."
End
Return
-
sambomb got a reaction from rochinha in DLL32 FUNCTION
Rochinha, algumas dlls indicam sucesso com 1 e erro com 0, outras sucesso com 0 e erro com -1, entre infinitas combinações possíveis, até mesmo o código do erro já pode vir diretamente nesse retorno.
Exemplo:
1 = Sucesso
0 = Sem comunicação
-1 = Parâmetro inválido
-2 = Erro aleatório de exemplo
-3 = Outro exemplo
Então nem sempre pode por <= 1, vai de caso a caso
E no caso dele o retorno válido é o 1:
-
sambomb got a reaction from kapiaba in Anti-Spywares e Adwares
http://brazil.kaspersky.com/produtos/produtos-para-usuarios-domesticos/internet-security
Se você leva antivirus a sério deveria experimentar utilizar um pago, tem pacotes de 3 anos para multiplas máquinas que valem o investimento
-
sambomb got a reaction from kapiaba in Verificar se tem anti virus na máquina.
If File( "C:\Program Files\Microsoft Security Client\MsMpEng.exe" )
-
sambomb got a reaction from Jmsilva in Como pegar a tecla Enter - Resolvido
Fivewin tem uns bugs com foco em componente...
O que eu fiz ae é criar uma tela que fica ativa só por 0.2 segundos e depois fecha sozinha, depois disso joga do foco para o componente que você quer.
Você pode separar essa solução ae em uma função colocando o tempo e janela atual como parâmetros.