Jump to content

Belini

Administradores (Adm)
  • Content count

    2,067
  • Joined

  • Last visited

  • Days Won

    105

Everything posted by Belini

  1. @Luigi e @Manimal Com as alterações que fiz na minha Gif pude usar a UDF que vc's indicaram e agora não dá mais oscilações na tela, obrigado pela indição da UDF que deram.
  2. Estou precisando de uma UDF simples mas que funcione bem para colocar gif numa gui, sugestões favor postar aqui.
  3. @Luigi fui ver aqui e usando este exemplo que postei mesmo colocando o redimensionamento não vai servir pois precisa estar em loop ou usar um adilib para funcionar, vc tem alguma indicação de UDF que dê para determinar o tamanho que a gif vai ficar na GUI e que dê para controlar a velocidade de troca dos quadros?
  4. Nunca trabalhei com banco de dados por isto preciso de dicas para criar um banco de dados de aproximadamente 2 milhões de linhas e depois fazer a leitura dele linha por linha para comparar com outra informação que será passada pelo programa, vou dar um exemplo da linha que preciso gravar no banco de dados e posteriormente fazer a leitura dela. 1=01 03 05 11 15 17 19 25 26 28 33 36 40 42 45 47 48 54 57 60 64 66 67 70 75 PG-Q01 10 2=03 05 07 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PG-Q02 10 3=02 07 10 12 14 16 17 23 26 28 32 34 35 39 41 48 49 52 54 58 61 62 63 70 72 PG-Q03 10 4=05 06 11 14 15 16 17 24 25 30 33 36 42 43 44 46 49 50 51 60 63 64 66 74 75 PG-Q04 10 5=02 01 05 08 17 19 23 24 27 28 31 39 40 44 45 47 49 51 55 59 61 63 66 74 75 PG-Q05 10 6=01 03 10 14 15 18 19 23 24 28 31 35 36 39 40 47 48 54 56 59 61 62 63 64 65 PG-Q06 10 7=02 07 09 15 18 20 21 23 25 30 31 36 41 42 43 46 50 51 56 59 63 64 70 74 75 PG-Q07 10 8=04 06 08 11 12 19 21 24 27 29 33 34 39 44 45 46 48 51 55 57 65 67 72 73 74 PG-Q08 10 9=04 05 08 14 15 17 20 25 28 30 36 39 41 42 44 46 51 55 57 60 63 64 72 74 75 PG-Q09 10 Estas são as linhas que preciso gravar e ler posterirmente e para isto penso em usar o For $i = 1 to 2000000
  5. _diskGetSerialDll()

    Que bom que deu certo aí prá vc, depois vou fazer testes aqui com o windows congelado também.
  6. O script que eu queria modificar peguei aqui https://www.autoitscript.com/forum/topic/81490-func-afying-gif-animation/ e o original dele além de poder controlar a velocidade da gif também se move na tela, seria bem interessante se conseguisse adicionar a função de redimensionamento para poder usar ele também. Script + gif de exemplo Gif.rar
  7. _diskGetSerialDll()

    Qual parte dele vc alterou para conseguir retornar o serial de HD com deepfreeze instalado?
  8. Acaba que desmembrei a gif e editei os quadros daí deu prá fazer a animação com .bmp mesmo. #include <StaticConstants.au3> #include <WindowsConstants.au3> Global $hGUI, $pic_img, $conta = 1 $hGUI = GUICreate("Animation", 378, 200, -1, -1, $WS_POPUP, $WS_EX_TOPMOST) GUISetBkColor(0xffffff) GUISetState() $pic_img = GUICtrlCreatePic(@ScriptDir & "\image_1.bmp", 0, 0, 378, 200, $SS_CENTERIMAGE) AdlibRegister("Img_animate", 100) HotKeySet("{Esc}", "Sair") While 1 Sleep(1000) WEnd Func Img_animate() $conta += 1 If $conta > 3 Then $conta = 0 GUICtrlSetImage($pic_img, @ScriptDir & "\image_" & $conta & ".bmp") EndFunc ;==>Img_animate Func sair() Exit EndFunc ;==>sair Animation.rar
  9. No seu include do Gdiplus a variável que armazena o endereço da dll deve ter outro nome, no meu aqui abre normal usando a variável $ghGDIPDLL Esta a cada 100 ms pois a função é chamada a cada 20ms mas só muda quando o contador está em 100 na verdade dá prá alterar chamando a cada 100ms e só mudando o estado do contador de 1 para 0 AdlibRegister("Gif_animate", 100) Func Gif_animate() If $count = 1 Then $i += 1 $count = 0 Else $count = 1 If $i = $GFC Then $i = 0 GifDrawFrame($i) EndIf EndFunc ;==>Gif_animate Sim mas neste exemplo que postei não faz diferença se a GUI for 0 x 0 ou 1000 x 1000 a gif sempre será mostrada no tamanho dela que é 300 x 300 justamente o que preciso alterar para poder usar este exemplo que postei, preciso redimensionar a gif para ajustar em GUIS de tamanhos variados Se a minha GUI abrisse sempre com a mesma resolução eu iria mesmo redimensionar a gif para ajustar nela mas esta gui irá abrir de acordo com a resolução de um segundo monitor que pode ser 1280 x 720, 1080 x 1920 ou até mesmo em telão que a resolução pode ser maior ainda.
  10. Tenho várias inclusive esta que vc postou mas todas dão flickers na tela com a imagem que preciso usar, apenas uma deu certo e nela tem como controlar até a velocidade porém não consegui redimensionar para o tamanho que quero colocar na gui, vou postar ela aqui prá ver se tem como adicionar o recurso de redimensionamento que falta ou talvez vc saiba de alguma outra que não dê estas oscilações na tela. #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GDIPlus.au3> #include <WinAPI.au3> Global $hImage, $hBitmap, $hScrDC, $hMemDC, $tSize, $pSize, $tSource, $pSource, $tBlend, $pBlend Global $Gif, $GFC, $GFDC, $pDimensionIDs, $tDL, $count = 0, $i = 0 $hGUI = GUICreate("Gif Animation", 100, 100, 100, 100, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)) GUISetState() $Gif = @ScriptDir & "\Image.gif" GifInit() AdlibRegister("Gif_animate", 20) HotKeySet("{Esc}", "Quit") While 1 sleep(1000) WEnd func Gif_animate() $count +=1 if $count >= 5 then $i += 1 $count = 0 else If $i = $GFC Then $i = 0 GifDrawFrame($i) endif endfunc Func Quit() _GDIPlus_ImageDispose($hImage) _WinAPI_ReleaseDC(0, $hScrDC) _WinAPI_DeleteObject($hBitmap) _WinAPI_DeleteDC($hMemDC) _GDIPlus_Shutdown() HotKeySet("{Esc}") Exit EndFunc Func GifDrawFrame($i) DllCall($ghGDIPDll, "int", "GdipImageSelectActiveFrame", "ptr", $hImage, "ptr", $pDimensionIDs, "int", $i) $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage) $hOld = _WinAPI_SelectObject($hMemDC, $hBitmap) _WinAPI_UpdateLayeredWindow($hGUI, $hScrDC, 0, $pSize, $hMemDC, $pSource, 0, $pBlend, $ULW_ALPHA) EndFunc Func GifInit() _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile($Gif) $ApW = _GDIPlus_ImageGetWidth($hImage) $ApH = _GDIPlus_ImageGetHeight($hImage) $hScrDC = _WinAPI_GetDC($hGUI) $hMemDC = _WinAPI_CreateCompatibleDC($hScrDC) $tSize = DllStructCreate($tagSIZE) DllStructSetData($tSize, "X", $ApW) DllStructSetData($tSize, "Y", $ApH) $pSize = DllStructGetPtr($tSize) $tSource = DllStructCreate($tagPOINT) $pSource = DllStructGetPtr($tSource) $tBlend = DllStructCreate($tagBLENDFUNCTION) DllStructSetData($tBlend, "Alpha", 255) DllStructSetData($tBlend, "Format", 1) $pBlend = DllStructGetPtr($tBlend) $tDL = DllStructCreate($tagGUID) $pDimensionIDs = DllStructGetPtr($tDL) $GFDC = DllCall($ghGDIPDll, "int", "GdipImageGetFrameDimensionsCount", "ptr", $hImage, "int*", 0) DllCall($ghGDIPDll, "int", "GdipImageGetFrameDimensionsList", "ptr", $hImage, "ptr", $pDimensionIDs, "int", $GFDC[2]) $GFC = DllCall($ghGDIPDll, "int", "GdipImageGetFrameCount", "int", $hImage, "ptr", $pDimensionIDs, "int*", 0) $GFC = $GFC[3] EndFunc Gif_Animation.rar
  11. São códigos usados para identificar a cartela e quantas rodadas vai ter, S são 6 e Q são 4
  12. @Manimal testei usano o comando "VACUUM INTO" e melhorou demais a velcidade para criar o banco de dados, obrigado mais uma vez!
  13. Fiz testes usando a primeira opção e foi super rápido depois abri o banco de dados original no DB Browser for SQLite.exe e realmente ele permaneceu inalterado ou seja funcionou usando a cópia na memória e muitas vezes mais rápido que antes, agora preciso apenas melhorar a velocidade de criação do banco de dados quando os números são sorteados, estou gravando linha por linha vc tem alguma sugestão de como armazenar e gravar várias de uma vez só ou outra solução para diminuir o tempo de criação do banco de dados?
  14. @manimal o que eu preciso é clonar o banco de dados para memória e fazer alterações nele apenas na memória também, não preciso gravar mais nada fisicamente depois que ele estiver carregado na memória porém preciso substituir os números sorteados em todo banco de dados que estiver na memória o outro bd será aberto físicamente quando precisar fazer alterações e o que fizer será salvo nos 2 fisicamente mas isto é fora da hora do sorteio, quando inicia o sorteio os 2 serão fechados com todas alterações que foram feitas e será carregada uma cópia do banco 2 apenas para conferencia dos números sorteados, ou seja terei 2 banco de dados sendo que um contém os dados das cartelas que não vendeu e o outro dados das vendidas aí quando vou cadastrar cartelas abro os dois fisicamente e faço alterações neles, quando inicia o sorteio os dois são fechados e preciso carregar as informações do banco 2 na memória para conferir os números que forem sendo sorteados sendo que preciso substituir o número sorteado por " | " de todo banco de dados mas apenas na memória, vc pode postar um exemplo de como usa o seu banco de dados na memória?
  15. @manimal eu gero as cartelas para serem vendidas antecipadamente e uso os dados que gravei em arquivo ini ou no caso agora no banco de dados para fazer a conferência de todas que foram vendidas e desta forma ninguém passa batido e nem precisa estar presente para concorrer por isto preciso já ter o banco de dados pronto sendo que no primeiro estarão as que não formam vendidas pois apaga a linha dele toda vez que uma cartela é cadastrada e nos outros dois tem todas que estão concorrendo sendoa número 2 usada para conferir os números que sairam e a 3 apenas para consulta, eu sei que se eu não indicar um banco de dados ele será criado na memória só que não quero criar e sim carregar um que já tenho salvo no disco e depois usar ele na memória sem salavar nada no disco. EDITADO: PM-S e PM-Q é a identificação da cartela "S" é quando tem 6 sorteios na mesma cartela e Q" é quando tem apenas 4 sorteios o que vem depois é número daquela cartela e usando este código tenho aceso a todos números contidos naquela cartela para poder fazer a conferência dela.
  16. Como seria para carregar na memória um arquivo .bd do disco e depois fazer todas alterações necessárias durante o tempo que estiver usando sem salvar no disco. #include <SQLite.au3> #include <array.au3> Global $hQuery, $aRow, $sMsg, $sSql, $dados_linha Global $BASE_DB, $cod_cartela, $sorteado, $retarr _SQLite_Startup(@ScriptDir & "\sqlite3.dll") If Not FileExists("database.db") Then $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE Dados (Numeros);") For $i = 1 To 10 $dados = "PM-S" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PM-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" ;_Base_Execute($sql) _SQLite_Exec($dbn, $sql) Next Else $dbn = _SQLite_Open("database.db") EndIf $cod_cartela = ' PM-S2002 ' $aResult = _SearchDatabase($cod_cartela); Procurando linha que tem o código da cartela (mostra apenas a linha que tem o código da cartela) If UBound($aResult) > 1 Then $dados_linha = $aResult[1][0]; guardar para gravar nas outras duas _SQLite_Exec($dbn, "DELETE FROM Dados WHERE Numeros= " & "'" & $aResult[1][2] & "'" & ";"); apaga a linha que tem o código da cartela _ArrayDisplay($aResult) Else MsgBox(4096, 'Sem informações', "Nenhuma informação foi encontrada!") EndIf $sorteado = Random(1, 75, 1) If $sorteado <= 9 Then $sorteado = " 0" & $sorteado & " " Else $sorteado = " " & $sorteado & " " EndIf _SQLite_Exec($dbn, "UPDATE Dados set Numeros= replace(numeros, '" & $sorteado & "', ' | ') where Numeros like '%" & $sorteado & "%'"); troca todos números por " | " $aResult = _SearchDatabase(" | "); Procurando linha que tem " | " (mostra todas as linha que tiveram os dados trocados) If UBound($aResult) > 1 Then _ArrayDisplay($aResult) _SQLite_Close() _SQLite_Shutdown() Func _SearchDatabase($sString) Local $sql, $sSql, $aTables, $aResult, $iState Local $tmp1, $tmp2 $sql = "SELECT Numeros, ""Dados"" AS ""table"", rowid FROM ""Dados""" $sSql = "SELECT * FROM (" & $sql & ") WHERE Numeros LIKE '%" & $sString & "%';" $iState = _SQLite_GetTable2d($dbn, $sSql, $aResult, $tmp1, $tmp2) If $iState <> $SQLITE_OK Then Return SetError(@error, 0, $iState) Else Return $aResult EndIf EndFunc ;==>_SearchDatabase
  17. Consegui encontrar e apagar a linha que tem o código da cartela mas ainda não consegui substituir o número sorteado em todo banco de dados, ex: se saiu o número 21 preciso trocar "21 " por "| " em todo banco de dados, alguém sabe como fazer isto? #include <SQLite.au3> #include <array.au3> Global $hQuery, $aRow, $sMsg, $sSql, $dados_linha Global $BASE_DB, $cod_cartela, $sorteado, $retarr _SQLite_Startup(@ScriptDir & "\sqlite3.dll") If Not FileExists("database.db") Then $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE Dados (Numeros);") For $i = 1 To 10 $dados = "PM-S" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PM-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" ;_Base_Execute($sql) _SQLite_Exec($dbn, $sql) Next Else $dbn = _SQLite_Open("database.db") EndIf $cod_cartela = 'PM-S325 ' $aResult = _SearchDatabase($cod_cartela); Procurando linha que tem o código da cartela (mostra apenas a linha que tem o código da cartela) If UBound($aResult) > 1 Then $dados_linha = $aResult[1][0]; guardar para gravar nas outras duas _SQLite_Exec($dbn, "DELETE FROM Dados WHERE Numeros= " & "'" & $aResult[1][0] & "'" & ";"); FUNCIONOU _ArrayDisplay($aResult); ESTA LINHA FOI APAGADA Else MsgBox(4096, 'Sem informações', "Nenhuma informação foi encontrada!") EndIf $sorteado = "60 " $trocar = "| " _SQLite_Exec($dbn, "UPDATE Dados set Numeros= " & _SQLite_FastEscape($sorteado) & " where Numeros= " & _SQLite_FastEscape($trocar)); troca todos números por "| " ==> (!ª tentativa) _SQLite_Exec($dbn, "UPDATE Dados set Numeros= " & "'" & $sorteado & "'" & " where Numeros= " & "'" & $trocar & "'"); troca todos números por "| "==> (2ª tentativa) _SQLite_Exec($dbn, "UPDATE Dados SET Numeros= " & "'" & $sorteado & "'" & " where Numeros= " & "'" & $trocar & "'" & ";"); troca todos números por "| "==> (3ª tentativa) $aResult = _SearchDatabase($trocar); Procurando linha que tem "| " (mostra todas as linha que tiveram os dados trocados) If UBound($aResult) > 1 Then _ArrayDisplay($aResult) Else MsgBox(4096, 'Sem informações', "Nenhuma informação foi encontrada!") EndIf _SQLite_Close() _SQLite_Shutdown() Func _SearchDatabase($sString) Local $sql, $sSql, $aTables, $aResult, $iState Local $tmp1, $tmp2 $sql = "SELECT Numeros, ""Dados"" AS ""table"", rowid FROM ""Dados""" $sSql = "SELECT * FROM (" & $sql & ") WHERE Numeros LIKE '%" & $sString & "%';" $iState = _SQLite_GetTable2d($dbn, $sSql, $aResult, $tmp1, $tmp2) If $iState <> $SQLITE_OK Then Return SetError(@error, 0, $iState) Else Return $aResult EndIf EndFunc ;==>_SearchDatabase Banco de dados para testes com 187.240 linhas: https://mega.nz/#!oBVGTS6C!qnsL0_lJvQCIc4dcC9L3bi0-O0YR8m43K7IADbh4oH8
  18. Alterei um código que encontrei no forum americano e já consegui mostrar a linha que tem o código da cartela que preciso e também consegui pegar a linha que tem o número sorteado, agora preciso deletar esta linha quando for encontrado o código da cartela e alterar o número para "| " quando o número encontrado na linha for o número que foi sorteado, vou postar o código para ver se está correta da forma que fiz ou se tem uma maneira melhor e mais rápida para encontrar estas informações que eu preciso. #include <SQLite.au3> #include <array.au3> Global $hQuery, $aRow, $sMsg, $sSql Global $BASE_DB, $cod_cartela, $sorteado _SQLite_Startup(@ScriptDir & "\sqlite3.dll") If Not FileExists("database.db") Then $dbn = _SQLite_Open("database.db") _SQLite_Exec($dbn, "CREATE TABLE Dados (Numeros);") For $i = 1 To 10 $dados = "PG-Q" & $i & "=02 05 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PG-Q" & $i & " 10" $sql = "INSERT INTO Dados VALUES('" & $dados & "');" ;_Base_Execute($sql) _SQLite_Exec($dbn, $sql) Next Else $dbn = _SQLite_Open("database.db") EndIf $cod_cartela = 'PG-Q5' $aResult = _SearchDatabase($cod_cartela); Procurando linha que tem o código da cartela (mostra apenas a linha que tem o código da cartela) _ArrayDisplay($aResult) $sorteado = '71 ' $aResult = _SearchDatabase($sorteado); Procurando linha que tem o número que foi sorteado (mostra as 10 linhas pois nas 10 tem o número "71 " _ArrayDisplay($aResult) _SQLite_Close() _SQLite_Shutdown() Func _SearchDatabase($sString) Local $Sql, $sSql, $aTables, $aResult, $iState Local $tmp1, $tmp2 $Sql = "SELECT Numeros, ""Dados"" AS ""table"", rowid FROM ""Dados""" $sSql = "SELECT * FROM (" & $Sql & ") WHERE Numeros LIKE '%" & $sString & "%';" $iState = _SQLite_GetTable2d(Default, $sSql, $aResult, $tmp1, $tmp2) If $iState <> $SQLITE_OK Then Return SetError(@error, 0, $iState) Else If $sString = $cod_cartela Then MsgBox(4096, "CÓDIGO", "Guardar a linha para gravar nos outros 2 banco de dados e apagar a linha") Else MsgBox(4096, "SORTEADO", 'Trocar a string encontrada por "| " em todas as linhas') EndIf Return $aResult EndIf Return SetError(1, 0, 0) EndFunc ;==>_SearchDatabase EDITADO: Uma coisa que já ví aqui nos testes é que gravar no banco dados é muitas vezes mais lento do que gravar num arquivo .ini gastei umas 6 horas para gravar 2 milhoes de linhas em arquivos .ini e para gravar a mesma quantidade em arquivo .db gastarei dias mas isto até que não vem muito ao caso pois as cartelas serão geradas aos poucos e não tantas de uma só vez, o que me interesa mesmo é depois do banco de dados criado é ter velocidade de resposta para fazer a conferência e alteração da linha cada vez que um número for sorteado pois o tempo de sorteio entre uma pedra e outra é muito curto e neste intervalo que canta a pedra seria preciso fazer a conferência dos 2 milhões de linhas e alteração das linhas que contiverem os número sorteado, vou gravar um banco de dados com umas 50.000 linhas apenas para testes aqui e se eu ver que dará certo gero as outras 1.000.950 linhas que faltam para fazer o teste completo.
  19. Entendi sim só que usando arquivo ini quanto maior o arquivo mais lento ele fica para ler e para gravar, esta parte da consulta ao primeiro arquivo e apagar a linha é tranquilo pois é feito um a um a medida que vai vendendo aí a melhor opção é apagar mesmo para torná-lo menor e assim mais rápido nas próximas consultas e gravações também, preciso mesmo de velocidade é no arquivo 2 que precisa conferir todas linhas contidas nele cada vez que um novo número é sorteado, para poder ir testando aqui teria como vc postar um exemplo de como encontar uma linha no banco de dados digitando apenas o código inicial e depois apagar ou modificar esta linha? No primeiro bd preciso achar uma linha digitando um código tipo este PG-25000 ai pegar as informações desta linha depois apagar No segundo bd preciso ler todas as linhas contidas nele identificar a linha que contem o número que foi sorteado e substituir este número por "| " Ex: o número sorteado foi 25 e a linha contém "25 " nela ai preciso trocar por "| ", veja que procuro por 25 com espaço na frente pois na identificação pode conter 25 também ( PG-25000 ) só que nela não tem espaço aí vai trocar apenas o 25 com espaço na frente que encontrar naquela linha. 5=02 01 05 08 17 19 23 25 27 28 31 39 40 44 45 47 49 51 55 59 61 63 66 74 75 PG-Q05 10 5=02 01 05 08 17 19 23 | 27 28 31 39 40 44 45 47 49 51 55 59 61 63 66 74 75 PG-Q05 10 Quando a linha toda ficar assim 5=| | | | | | | | | | | | | | | | | | | | | | | | | PG-Q05 10 é porque os 25 números sairam então aquela cartela é a ganhadoras ou uma delas.
  20. É um programa de bingo que fiz no primeiro arquivo ini tem os dados de todas cartelas que foram geradas, a medida que vai vendendo faço o cadastro que é consultado neste primeiro arquivo e se nele tiver os dados daquela cartela o programa grava nos outros dois arquivos e apaga do primeiro para que a mesma cartela não seja usada mais de uma vez, o arquivo 2 que é numerado em sequência ao invés do código da cartela será usado para conferir as cartelas cada vez que um número for sorteado e prá isto estou usando o for next de 1 até quantas linhas tiver no arquivo ini, o terceiro arquivo é usado apenas para conferir cartela separadamente tipo quero ver quantos acertos teve na cartela PG-Q232 aí entro com o código dela e ela verifica se tem os dados no arquivo 3 se tem carrega os dados e o programa faz a conferência. O que eu preciso fazer usando o banco de dados é isto: 1 - Criar um banco de dados que contenha aproximadamente 2.000.000 e neste banco de dados depois preciso fazer a consulta usando o código que é o número da cartela ex: PG-Q45=, caso encontre os dados guarda eles e apaga aquela linha. 2 - Criar um banco de dados com as informações que pegou do primeiro banco de dados e gravar em sequência numerando as linhas sem gravar o número da cartela no início tipo 1= linha, 2= linha... este banco de dados será lido por completo toda vez que um número for sorteado e na linha que encontar aquele número vai apagar ele de lá e manter o resto da linha 3 - Criar um banco de dados com informações idênticas as que pegou do primeiro banco de dados e será usado apenas para consulta quando entrar com o número de alguma cartela que foi cadastrada, neste não será feita nenhuma alteração quando for acesado.
  21. @Luigi tentei inserir algumas linhas para testar o exemplo que vc postou mas sempre dá por causa de ter espaço nas linhas que preciso inserir, como fazer para poder inserir letras e números separados por espaço? Func Etapa_1() Local $sql ConsoleWrite("Etapa 1: Inserindo um número" & @LF) For $i = 1 To 10 $dados = "PG-Q" & $i & "=01 02 06 08 15 20 23 26 28 30 35 36 38 43 45 47 52 54 55 56 66 68 71 74 75 PG-Q" & $i & " 10" $sql = "INSERT INTO matematica(numeros)VALUES(" & $dados & ");" _Base_Execute($sql) Next EndFunc ;==>Etapa_1 Coloquei numerando de 1 a10 prá depois tentar pegar os dados de alguma das linhas tipo a linha que houver PG-Q5 no início dela, quando for prá valer vou precisar pegar entre ums 2.000.000 de linhas
  22. Obrigado @manimal e @Luigi pelas aulas vou fazer testes aqui com tudo que vc passaram e gostaria que me dessem uma sugestão de como fazer o banco de dados destes 3 arquivos que uso se devo colocar os dados dos 3 em um banco de dados só ou se devo criar 3 banco de dados sendo um para cada arquivo deste, pergunto isto porque se for colocar tudo em um só serão aproximandamente 4.000.000 de linhas em um único banco de dados pois inicialmente só o primeio bd terá dados e quando pegar informação de alguma das linhas irá apagar dele e gravar nos outros dois db.
  23. @manimal as informações são apenas uma linha mesmo como vc postou no exemplo, meu programa já está pronto e usa 3 arquivos ini para armazenar dados, fazer leitura, comparação e atualização de dados, até umas 30.000 linhas funciona bem mas como devo precisar de ums 2 milhões de linhas pensei em fazer testes com banco de dados prá ver se consigo melhorar a velocidade de pesquisa e comparação, vou expplicar o que já faço usando arquivos ini aí vc me fala se é possível fazer o mesmo usando banco de dados e se terei melhora na velocidade de pesquisa, comparação e atualização de dados. 1º arquivo ini: Cadastro.ini 2º arquivo ini: Dados_01.ini 3º arquivo ini: Dados_01.ini No primeiro arquivo eu tenho todos cadastros e os dados que preciso ler estão identificados pelo que está nas chaves da seção com o nome DADOS aí funciona assim se eu entrar com o código PG-Q02 ele vai ler no primeiro ini e gravar nos arquivos ini 2 e 3 sendo que no arquivo 2 ele vai retirar a identificação PG-Q02 e vai gravar numerando sempre colocando prá ser a chave um número a mais do que o último gravado exemplo no arquivo 2 já tenho 8 dados gravados então o último garavado está na chave 8 aí este que vou gravar vai ter o número 9 como chave e depois dele os dados que pegou do arquivo 1 o arquivo 3 repete a mesma linha que pegou no arquivo ini 1 e feito isto apaga da arquivo 1 a linha que foi lida de onde pegou os dados para gravar nos arquivos 2 e 3, no exemplo que dei acima o arquivo 1 ficara sem as linhas 2, 4 e 6 depois que eu fiz a leitura dos dados destas linhas e gravei nos arquivos 2 e 3 Arquivo 1 depois de gravados os dados no inis 2 e 3 ou seja os dados que tem nos arquivos 2 e 3 não tem mais no arquivo 1 e o que tem no arquivo 1 ainda não foi transportado para os arquivos 2 e 3 Usando arquivo ini se eu precisar os dados que tem na chave PG-Q05 por exemplo eu já vou direto nestes dados e sem ter que digitar todos os dados que tem naquela linha apenas coloco para procurar PG-Q05 na seção DADOS aí gravo estes dados nos arquivos ini 2 e 3 depois apago a linha que tem a chave PG-Q05 usando o IniDelete, o meu problema é conseguir fazer o mesmo usando banco de dados e nem sei ainda se seria melhor criar 3 banco de dados como fiz usando arquivos ini ou criar apenas 1 e salvar os dados dos 3 nele mesmo.
  24. SQLite Básico

    @manimal o problema não era o ambiente e sim o nome da dll, agora seu exemplo funcionou perfeitamente agora preciso apenas acessar o banco de dados com o se os dados das colunas estivessem gravados em um arquivo ini, vou postar esta dúvida no outro tópico que criei para ver se vc consegue ajudar.
  25. Encontrei um exemplo no forum americano e estou fazendo testes nele mas ainda não sei como fazer a procura no banco de dados como faço usando o iniread por exemplo como seria para mim pegar os dados da linha 7 sem ter que ler linha por linha? #include <GUIConstants.au3> #include <EditConstants.au3> ;~ #include <SQLite.au3> ;~ #include <SQLite.dll.au3> #include "SQLite.au3" #include "SQLite.dll.au3" $form_num = 1 #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Sqlite GUI test", 223, 359, 267, 119) $count = GUICtrlCreateInput($form_num, 144, 10, 33, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY)) $b_right = GUICtrlCreateButton(">", 176, 8, 27, 25, 0) $b_left = GUICtrlCreateButton("<", 120, 8, 27, 25, 0) $lname = GUICtrlCreateLabel("Name:", 8, 48, 48, 17) $iname = GUICtrlCreateInput("", 64, 48, 145, 21) $ladress = GUICtrlCreateLabel("Adress:", 8, 88, 45, 17) $iadress = GUICtrlCreateInput("", 64, 88, 145, 21) $iemail = GUICtrlCreateInput("", 64, 128, 145, 21) $lemail = GUICtrlCreateLabel("E-mail:", 8, 128, 46, 17) $lother = GUICtrlCreateLabel("Other:", 8, 168, 46, 17) $eother = GUICtrlCreateEdit("", 64, 168, 145, 121) $badd = GUICtrlCreateButton("Add", 48, 312, 75, 25, 0) $bdel = GUICtrlCreateButton("Delete", 128, 312, 75, 25, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### _SQLite_Startup() If NOT FileExists("database.db") Then $dbn=_SQLite_Open("database.db") _SQLite_Exec($dbn,"CREATE TABLE datas (id,name,adress,email,other);") Else $dbn=_SQLite_Open("database.db") EndIf MsgBox(4096, '', $dbn) dataquery($form_num) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE progend() Case $b_right $form_num = $form_num + 1 GUICtrlSetData($count,$form_num) dataquery($form_num) Case $b_left If $form_num == 1 Then $form_num = 1 GUICtrlSetData($count,$form_num) Else $form_num = $form_num - 1 GUICtrlSetData($count,$form_num) dataquery($form_num) EndIf Case $badd IF GUICtrlRead($iname) == "" Then MsgBox(0,"ERORR","Empty name!") Else dataadd($form_num) EndIf Case $bdel datadel($form_num) EndSwitch WEnd Func progend() _SQLite_Close() _SQLite_Shutdown() Exit EndFunc Func dataadd($id) Local $retarr $str1 = GUICtrlRead($iname) $str2 = GUICtrlRead($iadress) $str3 = GUICtrlRead($iemail) $str4 = GUICtrlRead($eother) _SQLite_QuerySingleRow($dbn,"SELECT id FROM datas WHERE id='"&$id&"'",$retarr) If $retarr[0] <> "" Then _SQLite_Exec($dbn,"UPDATE datas SET name='"&$str1&"', adress='"&$str2&"',email='"&$str3&"',other='"&$str4&"' WHERE id='"&$id&"'") Else _SQLite_Exec($dbn,"INSERT INTO datas (id,name,adress,email,other) VALUES ('"&$form_num&"','"&$str1&"','"&$str2&"','"&$str3&"','"&$str4&"');") EndIf EndFunc Func dataquery($id) GUICtrlSetData($iname,"") GUICtrlSetData($iadress,"") GUICtrlSetData($iemail,"") GUICtrlSetData($eother,"") Local $retarr If _SQLite_QuerySingleRow($dbn,"SELECT * FROM datas WHERE id='"&$id&"'",$retarr) == $SQLITE_OK Then If $retarr[0] == "" Then ;MsgBox(0,"ERROR","Query error!") Else GUICtrlSetData($iname,$retarr[1]) GUICtrlSetData($iadress,$retarr[2]) GUICtrlSetData($iemail,$retarr[3]) GUICtrlSetData($eother,$retarr[4]) EndIf EndIf EndFunc Func datadel($id) Local $retarr GUICtrlSetData($iname,"") GUICtrlSetData($iadress,"") GUICtrlSetData($iemail,"") GUICtrlSetData($eother,"") _SQLite_QuerySingleRow($dbn,"SELECT id FROM datas WHERE id='"&$id&"'",$retarr) If $retarr[0] <> "" Then _SQLite_Exec($dbn,"DELETE FROM datas WHERE id='"&$id&"'") EndIf EndFunc
×