Jump to content

Luigi

Administradores (Adm)
  • Content count

    698
  • Joined

  • Last visited

  • Days Won

    137

Luigi last won the day on January 26 2018

Luigi had the most liked content!

Community Reputation

318 Excelente!

About Luigi

  • Rank
    Administrador
  • Birthday 02/08/1974

Profile Information

  • Gender
    Male
  • Location
    CWB
  1. Ajuda com o Tesseract

    @Israelks, _GDIPlus* é bastante cheio de opções, e por ter tantas opções, tantas "suavizações" talvez esteja atrapalhando... Estou aqui me perguntando, como é que você está usando o GDI. Será que abre a imagem, faz o resize e salva? Salva como? JPG? JPG vai compactar, talvez reduza a qualidade, talvez dificulte a leitura pelo Tesseract. PNG acho que não vai fazer essa compactação. Até.
  2. @Belini, dá um olhada... Achei essa UDF e fiz uns testes... Alterne o comentário das linhas 12 e 13. teste_com_gif.7z Agora eu vi que postei a mesma UDF que o @Manimal postou... Tem realmente que ser um GIF? Não pode ser um PNG com várias imagens? Como se fosse um GIF?
  3. Olá, desculpe cair na conversa de paraquedas... @Belini Rotação de imagem e redimensionamento, eu consegui mas sempre usando a função _GDIPlus_MatrixCreate() Até hoje acho que não entendi direito, e de tanto tentar, até consegui alguns efeitos interessantes. Veja este outro exemplo com a função _GDIPlus_GraphicsScaleTransform() Outra opção, é usar o IrrLicht, faz o cão com GIF, GIF animado... Mas são dois conjuntos de funções: AutoIT (com botões tradicionais) e IrrLicht (com botões gráficos).
  4. @Manimal, então... Eu concordo com você, resolver algo, usando poucas linhas de código ou um volume pequeno no SQLite é uma coisa... Mas, como o @Belini disse, são alguns milhões, mas tenho a impressão de que tudo ficará meio lento.
  5. BackEffect

    @Rodrigo Chaves Neto, valeu! Eu sei que em alguns campos o efeito não é o esperado, pois na verdade, o efeito de background é um GuiCtrlCreateLabel "colorido" que fica por trás dos controles (GuiCtrlCreateButton, GuiCtrlCreateInput, etc). É como se fosse um CSS, com um elemento por cima do outro, e o debaixo, vai "perdendo" a cor, até se misturar com o fundo. Acredito nem todos os campos de entrada de dados foram não construídos com o mesmo rigor. Por isso, as vezes tem algum efeito rebelde... Ou foi falta de conhecimento da minha parte mesmo. 8D
  6. Salve @Belini "Eu acho", que por uma questão de performance, quando você tiver certeza de que o dado é sempre integer, você pode deixá-lo como está ou tratar com Number() Local $sql = "UPDATE Dados set Numeros= " & Number($sorteado) & " where Numeros= " & _SQLite_FastEscape($trocar) ou Local $sql = "UPDATE Dados set Numeros= " & $sorteado & " where Numeros= " & _SQLite_FastEscape($trocar) Se você não tiver certeza do que vem pela frente, melhor usar o _SQLite_FastEscape Não querendo complicar... Mas olhando a sua query, achei mais fácil usar expressão regular pra fazer a pesquisa: Local $sql = "SELECT * FROM dados WHERE numeros REGEXP 'PM\-S2'" Desculpe, posso perguntar o que é o PM-S? e o PM-Q?
  7. @Belini, Nunca trabalhei com banco de dados por isto preciso de dicas para criar um banco de dados de aproximadamente 2 milhões de linhas Segundo página do desenvolvedor, SQLite manipula arquivos de até 140 terabytes... Então acho que você tem que colocar mais alguns milhões de linhas para começar a esbarrar no limite técnico. Veja: https://www.sqlite.org/whentouse.html @ Very large datasets e depois fazer a leitura dele linha por linha Beleza, é possível! Mas oriento a não fazer um for...next de 1 até o fim da lista... Vai ficar lento demais! Sugiro fazer por blocos, tipo, de 300 em 300 linhas por vez A mesma coisa vale para inserção de dados... Ler um arquivo inteiro, de não sei quantos mbytes ou gbytes e inserir e um for...next, vai ficar muito lento... Vai por blocos, monta uma query só... que insere um bloco de linhas, exemplo: Local $aInsert[1] _ArrayAdd($aInsert, "INSERT INTO matematica(numeros)VALUES(" & Random(0, 9, 1) & ");") _ArrayAdd($aInsert, "INSERT INTO matematica(numeros)VALUES(" & Random(0, 9, 1) & ");") _ArrayAdd($aInsert, "INSERT INTO matematica(numeros)VALUES(" & Random(0, 9, 1) & ");") _ArrayAdd($aInsert, "INSERT INTO matematica(numeros)VALUES(" & Random(0, 9, 1) & ");") _ArrayAdd($aInsert, "INSERT INTO matematica(numeros)VALUES(" & Random(0, 9, 1) & ");") Repete isso 20x... E no final... Local $sql= _ArrayToString($aInsert, "", 1) _Base_Execute($sql) Faz a execução de um concatenado de SQLs! Qual é a quantidade ideal? Não sei... depende do trabalho do seu insert, tem que testar... AutoIt parece que não se dá bem com loops muito grandes... Mas se for por blocos, parece melhora muito. O ideal é sempre inserir texto, utilizando antes _SQLite_FastEncode(). Ele faz o scape correto dos caracteres, assim não dá erro de insert. Local $frase = "Viva a matemática, que eu tanto amo e não lembro mais nada!" Local $sql = "INSERT INTO livro(frases)VALUES(" & _SQLite_FastEncode($frase) & ");" _Base_Execute($sql)
  8. Olá, chegando atrasado, mas deixo aqui a minha sugestão. Exemplo_SQLite.au3
  9. Autoit Frontend

    Bom trabalho @Pedro Pinheiro, achei bem legal ter usado IrrLicht e compartilhar no GitHub!
  10. @Belini, Minha contribuição. #include <Array.au3> Local $numeros[] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40] Local $combinacoes = 6 Local $combo = _ArrayCombinations($numeros, $combinacoes, ",") For $ii = 1 To UBound($combo, 1) - 1 Step $combinacoes For $jj = 0 To $combinacoes - 1 ConsoleWrite("[" & $ii & "]=" & $combo[$jj + $ii] & @LF) Next Next Obs: tente um um array pequeno... pois com 40 números... demora muitoooooo.
  11. A explicação do @Manimal é completa. Apenas a título de curiosidade, existe uma mega-power-ultra-fodástica ferramenta, CyberArk, que atua no seguimento de segurança corporativo, fazendo a troca de senhas e muitas outras coisas... E a linguagem que faz todas as automações por trás do CyberArk é... Tharám... A-U-T-O-I-T! @Fui...
  12. @Belini Segue minhas sugestões: Sugestão 1: ;~ http://www.autoitbrasil.com/forum/index.php?/topic/2177-hotkeyset-chamar-fun%C3%A7%C3%A3o-apenas-uma-vez/ #include <Misc.au3> Global $hDLL = DllOpen("user32.dll") Global $aKeys[][4] = [ _ [2], _ [10, False, "ShiftOn", "ShiftOff"], _ [11, False, "CtrlOn", "CtrlOff"] _ ] While Sleep(10) For $ii = 1 To $aKeys[0][0] If _IsPressed($aKeys[$ii][0], $hDLL) And Not $aKeys[$ii][1] Then Call($aKeys[$ii][2]) $aKeys[$ii][1] = True ElseIf Not _IsPressed($aKeys[$ii][0], $hDLL) And $aKeys[$ii][1] Then Call($aKeys[$ii][3]) $aKeys[$ii][1] = False EndIf Next WEnd Func ShiftOn() ConsoleWrite("Shift On!" & @LF) EndFunc ;==>ShiftOn Func ShiftOff() ConsoleWrite("Shift Off!" & @LF) EndFunc ;==>ShiftOff Func CtrlOn() ConsoleWrite("Ctrl On!" & @LF) EndFunc ;==>ShiftOn Func CtrlOff() ConsoleWrite("Ctrl Off!" & @LF) EndFunc ;==>ShiftOff DllClose($hDLL) Sugestão 2: ;~ http://www.autoitbrasil.com/forum/index.php?/topic/2177-hotkeyset-chamar-fun%C3%A7%C3%A3o-apenas-uma-vez/ #include <Misc.au3> #include <MsgBoxConstants.au3> Global $hDLL = DllOpen("user32.dll") Global $aKeys[][4] = [ _ [2], _ [10, False, ShiftOn, ShiftOff], _ [11, False, CtrlOn, CtrlOff] _ ] While Sleep(10) For $ii = 1 To $aKeys[0][0] If _IsPressed($aKeys[$ii][0], $hDLL) And Not $aKeys[$ii][1] Then $aKeys[$ii][2]() $aKeys[$ii][1] = True ElseIf Not _IsPressed($aKeys[$ii][0], $hDLL) And $aKeys[$ii][1] Then $aKeys[$ii][3]() $aKeys[$ii][1] = False EndIf Next WEnd Func ShiftOn() ConsoleWrite("Shift On!" & @LF) EndFunc ;==>ShiftOn Func ShiftOff() ConsoleWrite("Shift Off!" & @LF) EndFunc ;==>ShiftOff Func CtrlOn() ConsoleWrite("Ctrl On!" & @LF) EndFunc ;==>ShiftOn Func CtrlOff() ConsoleWrite("Ctrl Off!" & @LF) EndFunc ;==>ShiftOff DllClose($hDLL) Sugestão 3: ;~ http://www.autoitbrasil.com/forum/index.php?/topic/2177-hotkeyset-chamar-fun%C3%A7%C3%A3o-apenas-uma-vez/ #include <Misc.au3> Global $hDLL = DllOpen("user32.dll") Global $aKeys[][4] = [ _ [2], _ [10, False, ShiftOn, ShiftOff], _ [11, False, CtrlOn, CtrlOff] _ ] While Sleep(10) For $ii = 1 To $aKeys[0][0] If _IsPressed($aKeys[$ii][0], $hDLL) And Not $aKeys[$ii][1] Then $aKeys[$ii][1] = $aKeys[$ii][2]() ElseIf Not _IsPressed($aKeys[$ii][0], $hDLL) And $aKeys[$ii][1] Then $aKeys[$ii][1] = $aKeys[$ii][3]() EndIf Next WEnd Func ShiftOn() ConsoleWrite("Shift On!" & @LF) Return True EndFunc ;==>ShiftOn Func ShiftOff() ConsoleWrite("Shift Off!" & @LF) Return False EndFunc ;==>ShiftOff Func CtrlOn() ConsoleWrite("Ctrl On!" & @LF) Return True EndFunc ;==>ShiftOn Func CtrlOff() ConsoleWrite("Ctrl Off!" & @LF) Return False EndFunc ;==>ShiftOff DllClose($hDLL) Sugestão 4: ;~ http://www.autoitbrasil.com/forum/index.php?/topic/2177-hotkeyset-chamar-fun%C3%A7%C3%A3o-apenas-uma-vez/ #include <Misc.au3> Global $hDLL = DllOpen("user32.dll") Global $aKeys[][3] = [ _ [2], _ [10, False, Shift], _ [11, False, Ctrl] _ ] While Sleep(10) For $ii = 1 To $aKeys[0][0] If _IsPressed($aKeys[$ii][0], $hDLL) And Not $aKeys[$ii][1] Then $aKeys[$ii][2]($ii) ElseIf Not _IsPressed($aKeys[$ii][0], $hDLL) And $aKeys[$ii][1] Then $aKeys[$ii][2]($ii) EndIf Next WEnd Func Shift($id) Switch $aKeys[$ii][1] Case True ConsoleWrite("Shift Off!" & @LF) Case False ConsoleWrite("Shift On!" & @LF) EndSwitch $aKeys[$id][1] = Not $aKeys[$id][1] EndFunc ;==>ShiftOn Func Ctrl($id) Switch $aKeys[$ii][1] Case True ConsoleWrite("Ctrl Off!" & @LF) Case False ConsoleWrite("Ctrl On!" & @LF) EndSwitch $aKeys[$id][1] = Not $aKeys[$id][1] EndFunc ;==>ShiftOn DllClose($hDLL)
  13. Seria isso @Belini ? #cs Test() Func Test() Local $treeview, $i, $letter[27] GUICreate("Treeview", 210, 420) $treeview = GUICtrlCreateTreeView(0, 0, 210, 420, BitOR($TVS_HASLINES, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $i = 1 To 26 $letter[$i] = StringUpper(Chr(64 + $i)) GUICtrlCreateTreeViewItem($letter[$i], $treeview) Next _GUICtrlTreeView_SelectItem($treeview, _GUICtrlTreeView_GetFirstItem($treeview)) GUISetState() While 1 For $i = 1 To 26 Send($letter[$i]); Não seleciona a linha quando envio a letra Sleep(100) Next WEnd EndFunc ;==>Te #CE ;~ #AutoIt3Wrapper_AU3Check_Parameters= -q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7 ;~ #Tidy_Parameters=/sf #include-once #include <Array.au3> #include <GUIConstantsEx.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiTreeView.au3> OnAutoItExitRegister("OnExit") Opt("GUIOnEventMode", 1) Opt("GUIEventOptions", 1) Opt("MustDeclareVars", 1) Global $aGuiSize[2] = [800, 600] Global $sGuiTitle = "GuiTitle" Global $hGui Global $iTreeView Global $sLetter Global $iSearch, $hItem $hGui = GUICreate($sGuiTitle, $aGuiSize[0], $aGuiSize[1]) GUISetOnEvent($GUI_EVENT_CLOSE, "Quit") $iTreeView = GUICtrlCreateTreeView(10, 10, 210, 420, BitOR($TVS_HASLINES, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE) For $ii = 1 To 26 $sLetter = StringUpper(Chr(64 + $ii)) GUICtrlCreateTreeViewItem($sLetter, $iTreeView) Next GUISetState(@SW_SHOW, $hGui) For $ii = 1 To 26 $sLetter = StringUpper(Chr(64 + $ii)) $iSearch = _GUICtrlTreeView_FindItem($iTreeView, $sLetter) If Not @error Then $hItem = _GUICtrlTreeView_GetItemHandle($iTreeView, $iSearch) _GUICtrlTreeView_SelectItem($iTreeView, $hItem, $TVGN_FIRSTVISIBLE) _GUICtrlTreeView_SetState($iTreeView, $hItem, $TVIS_SELECTED, True) EndIf Next While Sleep(25) WEnd Func OnExit() GUISetState($hGui, @SW_HIDE) GUIDelete($hGui) EndFunc ;==>OnExit Func Quit() Exit EndFunc ;==>Quit
  14. Como ignorar Critical Errors

    Use: Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc") Func _ErrFunc($oErr)     ConsoleWrite("COM Error, ScriptLine(" & $oErr.scriptline & ") : Number 0x" & Hex($oErr.number, 8) & " - " & $oErr.windescription & @CRLF) EndFunc   ;==>_ErrFunc
  15. Como ignorar Critical Errors

    Olá @Bllee, falando especificamente do erro que você postou acima, você está tentando imprimir na saída do console, a variável $X, só que ela nunca foi usada antes... Muito menos declarada... O ideal é sempre definir as variáveis antes de começar a usá-las, exemplo: Local $x ConsoleWrite($x) Assim não dá erro. Mas tá... e qual o valor de $x? Nenhum... Nada... Pode ser "" (vazio). Pelo menos, esse erro, tem essa forma de corrigir.
×