Clipper On Line • Ver Tópico - Guia Postal dos correios

Guia Postal dos correios

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Guia Postal dos correios

Mensagempor JoséQuintas » 11 Dez 2016 19:58

Acho que só agora encerrei isso.
Daqui pra frente é deixar atualizando o que sobrou.
A título de curiosidade, tem CEP que inclui o endereço completo, incluindo número.
O primeiro da lista é um dos exemplos.
Não sei porque em cpCepList ficou dobrado.

cep2.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 11 Dez 2016 20:14

Só a título de curiosidade:
Serviu pra deixar a base atualizada, mas para o webservice não fez diferença.
Como 31/10/2016 já tem mais de 30 dias, de qualquer forma o webservice vai consultar on-line e atualizar.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 11 Dez 2016 20:21

A propósito: descobri a "criptografia" inversa.
Daria pra usar direto a base dos correios no aplicativo, sem conversão nenhuma.
Ou a base MySQL do mesmo jeito.

aqui direto no Access:


#include "inkey.ch"
#define AD_USE_CLIENT 3
REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL cnGuia, Rs, nKey := 0, cCep, Rs2, Rs3, cSql

   Set( _SET_CODEPAGE, "PTISO" )

   SetMode( 40, 100 )
   CLS
   cnGuia := ConexaoAccess()
   cnGuia:Open()

   cCep := ConverteFromCep( "03677070" )

   cSql := "SELECT " + ;
           "LOG_LOGRADOURO.LOG_NOME AS ENDERECO, " + ;
           "BAI_NU_SEQUENCIAL_INI, " + ;
           "LOC_NU_SEQUENCIAL, " + ;
           "LOG_LOGRADOURO.UFE_SG AS UF, " + ;
           "LOG_LOGRADOURO.LOG_KEY_DNE AS KEYDNE " + ;
           "FROM LOG_LOGRADOURO " + ;
           "WHERE LOG_KEY_DNE=" + StringSql( cCep )
   //? cSql
   Rs := cnGuia:Execute( cSql )
   cSql := "SELECT BAI_NO AS BAIRRO FROM LOG_BAIRRO WHERE BAI_NU_SEQUENCIAL=" + NumberSql( Rs:Fields( "BAI_NU_SEQUENCIAL_INI" ):Value )
   //? cSql
   Rs2 := cnGuia:Execute( cSql )
   cSql := "SELECT LOC_NO AS CIDADE FROM LOG_LOCALIDADE WHERE LOC_NU_SEQUENCIAL=" + NumberSql( Rs:Fields( "LOC_NU_SEQUENCIAL" ):Value )
   //? cSql
   Rs3 := cnGuia:Execute( cSql )
   DO WHILE nKey != K_ESC .AND. ! Rs:Eof()
      nKey := Inkey()
      ?
      ?? Rs:Fields( "ENDERECO" ):Value
      ?? Rs2:Fields( "BAIRRO" ):Value
      ?? Rs3:Fields( "CIDADE" ):Value
      ?? Rs:Fields( "UF" ):Value
      ?? ConverteToCep( Rs:Fields( "KEYDNE" ):Value )
      Rs2:Close()
      Rs3:Close()
      Rs:MoveNext()
   ENDDO
   Rs:Close()
   cnGuia:Close()

   RETURN


A função inversa é simples: o critério é que a cada ocorrência de mesmo número, é usada a codificação seguinte.
Testei só alguns CEPs, não todos.
Pode ser que precise ajustar a ordem das letras de cada número.
Como não vou usar, não me preocupei em acertar todos.
Usei dois CEPs de referência: 03676-080 e 03677-070

O primeiro zero vai usar UG, o segundo LA, o terceiro AL, e o quarto GU.
Não sei o que acontece se tivesse um quinto zero, mas coloquei pra reiniciar.

Desta forma, é só pegar um CEP, converter e pesquisar direto, sem nem precisar mexer na base original.

// SELECT * FROM LOG_LOGRADOURO WHERE LOG_DNE_KEY = ConverteFromCep( cCep )
//

FUNCTION ConverteFromCEP( cCep )

   LOCAL oElement, cKey := "", ConvList, nIndex

   ConvList := { ;
      { "UG", "LA", "AL", "GU" }, ;
      { "X8", "8X", "CN", "NC" }, ;
      { "Z0", "EP", "PE", "0Z" }, ;
      { "GR", "B1", "1B", "RG" }, ;
      { "3D", "DI", "D3", "ID" }, ;
      { "SJ", "C4", "4C", "JS" }, ;
      { "2A", "A2", "QH", "HQ" }, ;
      { "FO", "90", "09", "OF" }, ;
      { "7Y", "DM", "Y7", "MD" }, ;
      { "5V", "BK", "V5", "KB" } }

   FOR EACH oElement IN ConvList
      AAdd( oElement, 1 )
   NEXT
   FOR EACH oElement IN cCep
      nIndex := ConvList[ Val( oElement ) + 1, 5 ]
      cKey += ConvList[ Val( oElement ) + 1, nIndex ]
      ConvList[ Val( oElement ) + 1, 5 ] := iif( ConvList[ Val( oElement ) + 1, 5 ] == 4, 1, ConvList[ Val( oElement ) + 1, 5 ] + 1 )
   NEXT

   RETURN cKey
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 13 Dez 2016 18:04

Como eu disse, testei somente alguns.
Deve ser o caso de testar todos, e acertar a ordem.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 17 Dez 2016 10:53

Ainda como eu disse, só a questão da ordem.
Uma vez que a "descriptografia" deu certo, só usá-la pra decifrar a "criptografia", que só depende da ordem.

FUNCTION ConverteFromCEP( cCep )

   LOCAL oElement, cKey := "", ConvList

   ConvList := { ;
      { "UG", "AL", "UG", "AL", "GU", "LA", "00", "LA" }, ;
      { "X8", "CN", "X8", "CN", "8X", "NC", "8X", "NC" }, ;
      { "Z0", "EP", "02", "EP", "0Z", "7Y", "02", "PE" }, ;
      { "1B", "GR", "1B", "03", "B1", "RG", "B1", "GR" }, ;
      { "3D", "ID", "3D", "04", "D3", "04", "3D", "DI" }, ;
      { "4C", "JS", "05", "05", "05", "SJ", "C4", "SJ" }, ;
      { "2A", "HQ", "06", "06", "06", "06", "A2", "06" }, ;
      { "09", "FO", "09", "FO", "07", "07", "90", "OF" }, ;
      { "Y7", "DM", "Y7", "DM", "7Y", "MD", "7Y", "MD" }, ;
      { "V5", "BK", "09", "BK", "09", "09", "09", "KB" } }

   FOR EACH oElement IN cCep
      cKey += ConvList[ Val( oElement ) + 1, oElement:__EnumIndex ]
   NEXT

   RETURN cKey


usei este fonte pra testar.


#include "inkey.ch"
REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main

   LOCAL cnGuia, Rs, nKey := 0, cSql, cCep, cKeyDne, cNewKeyDne, nCont := 1, aTabelaList, oElement

   aTabelaList := { ;
      { "LOG_LOCALIDADE",     "LOC_KEY_DNE" }, ;
      { "LOG_UNID_OPER",      "UOP_KEY_DNE" }, ;
      { "LOG_CPC",            "CPC_KEY_DNE" }, ;
      { "LOG_GRANDE_USUARIO", "GRU_KEY_DNE" }, ;
      { "LOG_LOGRADOURO",     "LOG_KEY_DNE" } }

   Set( _SET_CODEPAGE, "PTISO" )

   SetMode( 40, 100 )
   CLS
   cnGuia := ConexaoAccess()
   cnGuia:Open()

   FOR EACH oElement IN aTabelaList
      ? oElement[ 1 ]
      cSql := "SELECT " + ;
              oElement[ 2 ] + " AS KEYDNE " + ;
              "FROM " + oElement[ 1 ]
      Rs := cnGuia:Execute( cSql )
      DO WHILE nKey != K_ESC .AND. ! Rs:Eof()
         nKey := Inkey()
         cKeyDne    := Rs:Fields( "KEYDNE" ):Value
         cCep       := ConverteToCep( cKeyDne )
         cNewKeyDne := ConverteFromCep( cCep )
         nCont++
         IF Left( cKeyDne, 4 ) != Left( cNewKeyDne, 4 ) .AND. cKeyDne != "LOC"
            ? nCont, cCep, Transform( cKeyDne, "@R XX-XX-XX-XX-XX-XX-XX-XX" ), Transform( cNewKeyDne, "@R XX-XX-XX-XX-XX-XX-XX-XX" ), cKeyDne == cNewKeyDne
         ENDIF
         Rs:MoveNext()
      ENDDO
      ? nCont
   NEXT
   Rs:Close()
   cnGuia:Close()
   ? nCont

   RETURN


Testado para todos os 1.016.352 CEPs existentes no guia postal.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 17 Dez 2016 11:10

Opa... estava fazendo por partes, não reparei que não terminei.... rs
Aqui só fez para os primeiros dígitos.

         IF Left( cKeyDne, 4 ) != Left( cNewKeyDne, 4 ) .AND. cKeyDne != "LOC"
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 18 Dez 2016 06:21

Até o quarto digito numérico deu certo: a cada número em cada posição corresponde um par de letras.
Nos demais, há algum critério que precisa decifrar, porque pode ser normal ou invertido.


FUNCTION ConverteFromCEP( cCep )

   LOCAL oElement, cKey := "", ConvList

   ConvList := { ;
      { "UG", "AL", "UG", "AL", "GU", "LA", "GU", "AL" }, ;
      { "X8", "CN", "X8", "CN", "8X", "CN", "8X", "NC" }, ;
      { "Z0", "EP", "Z0", "EP", "0Z", "PE", "0Z", "PE" }, ;
      { "1B", "GR", "1B", "GR", "B1", "RG", "B1", "GR" }, ;
      { "3D", "ID", "3D", "ID", "D3", "DI", "3D", "DI" }, ;
      { "4C", "JS", "4C", "JS", "C4", "SJ", "C4", "SJ" }, ;
      { "2A", "HQ", "2A", "HQ", "A2", "QH", "A2", "QH" }, ;
      { "09", "FO", "09", "FO", "90", "OF", "90", "OF" }, ;
      { "Y7", "DM", "Y7", "DM", "7Y", "MD", "7Y", "MD" }, ;
      { "V5", "BK", "V5", "BK", "5V", "KB", "5V", "KB" } }

   FOR EACH oElement IN cCep
      cKey += ConvList[ Val( oElement ) + 1, oElement:__EnumIndex ]
   NEXT

   RETURN cKey
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 20 Dez 2016 10:01

Mas e aquelas ferramentas que disse ter? Elas não ajudam a decifrar?
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 20 Dez 2016 13:17

Sem chance. Talvez seja pela data de cadastro, e não tenha nenhuma lógica aritmética.
Os mesmos CEPs com final 6500, cada hora o último zero é codificado como LA ou AL.
Não é pela soma ser par ou ímpar, não é por ter zero repetido, e não é relacionado a nenhum número anterior.

    832672        617 24866500 Z0IDY7HQA2SJGULA Z0IDY7HQA2SJGUAL
    833106        617 24846500 Z0IDY7IDA2SJGULA Z0IDY7IDA2SJGUAL
    833771        617 24856500 Z0IDY7JSA2SJGULA Z0IDY7JSA2SJGUAL
    836369        617 41336500 3DCN1BGRA2SJGULA 3DCN1BGRA2SJGUAL
    847328        617 08726500 UGDM09EPA2SJGULA UGDM09EPA2SJGUAL
    848288        617 71256500 09CNZ0JSA2SJGULA 09CNZ0JSA2SJGUAL
    851535        617 32056500 1BEPUGJSA2SJGULA 1BEPUGJSA2SJGUAL
    868625        617 24936500 Z0IDV5GRA2SJGULA Z0IDV5GRA2SJGUAL
    868676        617 24926500 Z0IDV5EPA2SJGULA Z0IDV5EPA2SJGUAL
    873362        617 07726500 UGFO09EPA2SJGULA UGFO09EPA2SJGUAL
    874232        617 09336500 UGBK1BGRA2SJGULA UGBK1BGRA2SJGUAL
    876302        617 70686500 09AL2ADMA2SJGULA 09AL2ADMA2SJGUAL
    877419        617 79816500 09BKY7CNA2SJGULA 09BKY7CNA2SJGUAL
    884237        617 74936500 09IDV5GRA2SJGULA 09IDV5GRA2SJGUAL
    893319        617 08586500 UGDM4CDMA2SJGULA UGDM4CDMA2SJGUAL
    894545        617 63046500 2AGRUGIDA2SJGULA 2AGRUGIDA2SJGUAL
    908479        617 05276500 UGJSZ0FOA2SJGULA UGJSZ0FOA2SJGUAL
    912855        617 29136500 Z0BKX8GRA2SJGULA Z0BKX8GRA2SJGUAL
    921991        617 32636500 1BEP2AGRA2SJGULA 1BEP2AGRA2SJGUAL
    923457        617 25946500 Z0JSV5IDA2SJGULA Z0JSV5IDA2SJGUAL
    923955        617 25916500 Z0JSV5CNA2SJGULA Z0JSV5CNA2SJGUAL
    928842        617 07786500 UGFO09DMA2SJGULA UGFO09DMA2SJGUAL
    932399        617 29016500 Z0BKUGCNA2SJGULA Z0BKUGCNA2SJGUAL
    963361        617 75516500 09JS4CCNA2SJGULA 09JS4CCNA2SJGUAL
    967387        617 28926500 Z0DMV5EPA2SJGULA Z0DMV5EPA2SJGUAL
    978999        617 13736500 X8GR09GRA2SJGULA X8GR09GRA2SJGUAL
    979286        617 13176500 X8GRX8FOA2SJGULA X8GRX8FOA2SJGUAL
    982182        617 76386500 09HQ1BDMA2SJGULA 09HQ1BDMA2SJGUAL
    985010        617 75386500 09JS1BDMA2SJGULA 09JS1BDMA2SJGUAL
    987918        617 79076500 09BKUGFOA2SJGULA 09BKUGFOA2SJGUAL
    991608        617 14786500 X8ID09DMA2SJGULA X8ID09DMA2SJGUAL
    995860        617 55156500 4CJSX8JSA2SJGULA 4CJSX8JSA2SJGUAL
   1010244        617 64036500 2AIDUGGRA2SJGULA 2AIDUGGRA2SJGUAL


Esses são apenas alguns, onde usaram no final LA ao invés de AL, pra representar o zero.
Nenhum ponto em comum que indique o porque disso.

Para os quatro primeiros dígitos, basta a posição.
Para os quatro últimos... não dá pra saber.

Isso seria pra pesquisar diretamente no arquivos dos correios, sem nenhuma alteração.
No caso é só criar uma cópia, que permita alteração, e gravar um campo com o CEP descodificado, como fiz no início, e usar esse novo campo como pesquisa.

Pesquisar por endereço dá, mas pesquisar por CEP só fazendo isso.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 03 Jan 2017 09:05

Pois é....
Ainda não terminei de verificar todos os CEPs, mas alguns do guia COMPRADO já não valem mais.
Definitivamente, impossível manter uma base 100% atualizada, nem mesmo comprando dos correios.
Só mesmo online, e olhe lá....
Nota: falta verificar uns 8.000 ainda, e estou verificando somente os "extras" que vieram no guia, menos de 2% do total.

cep.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 03 Jan 2017 17:55

Foi só coincidência eu ter dado uma olhada nisto.
Mas achei curioso.
CEPs diferentes, conforme o andar do prédio.

cep.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 04 Jan 2017 14:15

Só ficou faltando aprender como montar um webservice em todos detalhes, mas já agradeço pelo que pude aprender sobre o CEP.


Vai escolher aonde vai hospedar o webservice, escolher a linguagem de programação, o banco de dados, e fazer.
Não há o que ensinar, ou sabe ou não sabe.
Com certeza, dificilmente vai ser usando Harbour.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 08 Mar 2017 21:47

Só a título de curiosidade:
Quando fui mexer com CEP, sairam atualizacões logo em seguida, constando no site dos correios..
Até agora não tem nenhuma novidade no site dos correios, apesar do guia postal dizer que está atualizado até uma data mais nova.

Sei lá se foi concidência issso, ou se deixaram pra mostrar serviço só no final do ano.... rs
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Guia Postal dos correios

Mensagempor Concentra » 27 Mar 2017 08:47

Bom dia !

Esta base de dados tem informações de posição, latitude, longitude ?

[[]]
Concentra
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 28 Jan 2008 15:41
Cidade/Estado: Piracicaba - SP
Curtiu: 1 vez
Mens.Curtidas: 3 vezes

Guia Postal dos correios

Mensagempor JoséQuintas » 27 Mar 2017 09:04

Não.
Até comecei a gravar numa época, mas não era base confiável, então não atualizei mais.
Acho que era do opencep.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 759 vezes

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Ahrefs [Bot] e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro