kapiaba Posted July 20, 2015 Report Share Posted July 20, 2015 Olá Estou utilizando esse, sem problema. oHttp:= TIpClientHttp():new( "http://cep.republicavirtual.com.br/web_cep.php?cep="+::cCep+"&formato=xml") Dorneles, mostre um exemplo na prática porfa, assim é melhor. Obg. abs. jfaguiar 1 Quote Link to comment Share on other sites More sharing options...
dorneles Posted July 20, 2015 Report Share Posted July 20, 2015 ccep := BuscaCEP():New(aGetCli.cep) aGetCli.endereco := LEFT(RemoverAcentos(ccep:GetTipo() + " " + ccep:GetLogradouro())+SPACE(40),40) aGetCli.bairro := LEFT(RemoverAcentos(ccep:GetBairro())+SPACE(15),15) aGetCli.cidade := UPPER(LEFT(RemoverAcentos(ccep:GetCidade())+SPACE(60),60)) aGetCli.estado := LEFT(ccep:GetUF()+SPACE(02),02) class BuscaCEP private: data cLogradouro init "" data cBairro init "" data cCidade init "" data cTipo init "" data cCep init "" data cUF init "" data cSrvResp init "" public: method new(cep) constructor method busca(cep) inline method GetLogradouro() return ::cLogradouro endmethod inline method GetBairro() return ::cBairro endmethod inline method GetCidade() return ::cCidade endmethod inline method GetTipo() return ::cTipo endmethod inline method GetUF() return ::cUF endmethod inline method GetSrvSts() return ::cSrvResp endmethod endclass method new(cep) class BuscaCEP if cep != nil ::cCep := cep else ::cCep := "99999999" endif ::busca() return self method busca(cep) class BuscaCEP local oHttp, cXML local oDoc, oIterator if cep != nil ::cCep := cep endif oHttp:= TIpClientHttp():new( "http://cep.republicavirtual.com.br/web_cep.php?cep=]http://cep.republicavirtual.com.br/web_cep.php?cep=]http://cep.republicavirtual.com.br/web_cep.php?cep="+::cCep+"&formato=xml") //"http ://cep.republicavirtual.com.br/web_cep.php?cep="+::cCep+"&formato=xml" oHttp:open() cXML := oHttp:readAll() oHttp:close() oDoc := TXmlDocument():New(cXML, HBXML_STYLE_NOESCAPE) if oDoc:nError != HBXML_ERROR_NONE ? "Erro ao ler o XML dos correios" endif TRY oIterator := TXmlIterator():New( oDoc:findfirst( "webservicecep" ) ) if oIterator:Next():cData == "1" ::cSrvResp := oIterator:Next():cData ::cUF := oIterator:Next():cData ::cCidade := oIterator:Next():cData ::cBairro := oIterator:Next():cData ::cTipo := oIterator:Next():cData ::cLogradouro := oIterator:Next():cData else // ? "ERRO :(" endif CATCH END CursorArrow() return nil kapiaba 1 Quote Link to comment Share on other sites More sharing options...
oribeiro Posted July 20, 2015 Report Share Posted July 20, 2015 Esse link funciona: cUrl := "http://cep.republicavirtual.com.br/web_cep.php?cep="+cCep +"&formato=xml" Onde cCep é o CEP sem formatação. Além desse existem outras páginas gratuitas para consulta de CEP? Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted July 24, 2015 Report Share Posted July 24, 2015 Veja se eu entendi... eu tenho que saber o numero do cep para que mostre o nome da rua ?? é que não consegui usa-los, não está retornando nada, tudo em branco, tô mais perdido do que cão que cai de mudança... Obrigado Quote Link to comment Share on other sites More sharing options...
dorneles Posted July 24, 2015 Report Share Posted July 24, 2015 sim, vc só informa o cep que ele busca o restante e é super rapido. eu tenho um arquivo cep no sistema, salvo o resultado da busca nesse arquivo. Quote Link to comment Share on other sites More sharing options...
betovsp Posted September 15, 2015 Report Share Posted September 15, 2015 Olá pessoal. Achei esse site: https://viacep.com.br/ Ele retorno os dados em jsonp, xml, piped e querty Podem me ajudar a fazer a busca, passar a função jsonp para five. Obrigado. Quote Link to comment Share on other sites More sharing options...
miragerr Posted September 16, 2015 Report Share Posted September 16, 2015 Ola, boa noite Creio que a melhor opção para voce usar vai ser a: PIPEDURL: viacep.com.br/ws/01001000/piped/ cep:01001-000|logradouro:Praça da Sé|complemento:lado ímpar|bairro:Sé|localidade:São Paulo|uf:SP|ibge:3550308 pois desta forma voce pode colocar os PIPE "|" em um array com o HB_ATOKENS da seguinte forma aRetorno := HB_aTokens( cRetorno_Url, "|" ) Desta forma fica facil de voce pegar os retornos onde: aRetorno[1] = "cep:01001-000" aRetorno[2] = "logradouro:Praça da Sé" ... E assim por diante, bem pratico mesmo Espero ter ajudado. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted September 16, 2015 Report Share Posted September 16, 2015 via PIPED, é mais menos assim... oPg = CreateObject("Microsoft.XMLHTTP") oPg:Open("GET",'https://viacep.com.br/ws/01001000/piped/',.F.) oPg:Send() cBuf = oPg:ResponseBody aBuf = HB_aTokens( cBuf, "|") MsgList(aBuf) Quote Link to comment Share on other sites More sharing options...
Marca Posted September 16, 2015 Report Share Posted September 16, 2015 Bom dia a todos.Uma observação sobre o cUrl := "http://cep.republica..._cep.php?cep=" cCep +"&formato=xml"Ele deixa de apresentar vários ceps. No caso aqui da minha região a todo momento dizia não encontrar o cep Quote Link to comment Share on other sites More sharing options...
Theotokos Posted September 16, 2015 Report Share Posted September 16, 2015 usando xml: function FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst) Local oPg, cBuf, tmp, aRet := array(7) aFill(aRet,'') cbuf :=space(255) xcep := (cCep) mcepa = alltrim(tiratraco(ccepa)) mcepx = alltrim(xcep) * If Empty(xCep) .Or. Len(AllTrim(xCep)) <= 1 MsgGet( "É Preciso Digitar o Cep","CEP",@xCEP,,"CEP") xCep := (xCep) mcepx = alltrim(xcep) End * *if mcepx <> mcepa *if mcepx <> "00000000" if internet_ok("www.terra.com.br",80) if xCep <> "00000000" oPg := CreateObject("Microsoft.XMLHTTP") xComando := "https://viacep.com.br/ws/" + xCEP + "/xml" oPg:Open("GET",xComando,.f.) oPg:Send() cBuf := oPg:responseBody if .f. // rtrim(substr(cBuf, at('<resultado_txt>', cBuf)+15, 7)) <> "sucesso" MsgInfo("CEP não encontrado, favor verificar....","Busca") cBuf = space(255) return .t. endif endif * mestado := AllTrim((substr(cBuf, at('<uf>', cBuf) + 4, 2))) mCidade := AllTrim((substr(cBuf, at('<localidade>', cBuf) + 12, at('</localidade>', cBuf) - (at('<localidade>', cBuf) + 12)))) mxBairro := AllTrim((substr(cBuf, at('<bairro>', cBuf) + 8, at('</bairro>', cBuf) - (at('<bairro>', cBuf) + 8)))) mxEndere := AllTrim((substr(cBuf, at('<tipo_logradouro>', cBuf) + 17, at('</tipo_logradouro>', cBuf) - (at('<tipo_logradouro>', cBuf) + 17)))) mxendere += " "+((substr(cBuf, at('<logradouro>', cBuf) + 12, at('</logradouro>', cBuf) - (at('<logradouro>', cBuf) + 12)))) * mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro )) mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade )) * if empty(mxEndere) if MsgYesNo("Cidade sem Logradouro nos Correios, Confirma troca ?") mEndere := mxendere mBairro := mxBairro Else Return .f. endif else mEndere := mxendere mBairro := mxBairro endif mCod_cidade := upper((substr(cBuf,at('<ibge_municipio_verificador>', cBuf) + 28, 07))) mIbgeUF := upper((substr(cBuf, at('<ibge_uf>', cBuf)+ 9, 02))) * dEnd := Substr(mEndere+space(40),1,40) dBai := Substr(mBairro+space(30),1,40) dCid := Substr(mCidade+space(50),1,50) dEst := Substr(mestado+space(2),1,2) dCep := SubStr(xCep,1) // ,5)+"-"+SubStr(xCep,6) * oJan:Update() oJan:Display() SysRefresh() endif *endif *endif return .t. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 16, 2015 Report Share Posted September 16, 2015 Theotokos, completa aqui pra mim. Como eu tiro esse acento do São Paulo? #include "FiveWin.ch" static oJan //----------------------------------------------------------------// function Main() local oBar, cCep, ccepa, dEnd, dBai, dCid, dEst cCep := "01313-000" ccepa := "01313000" //??? sem traco //oJan := oWnd //??? dEnd := SPACE(40) dBai := SPACE(20) dCid := SPACE(20) dEst := SPACE(02) DEFINE WINDOW oJan TITLE "Find Cep" DEFINE BUTTONBAR oBar _3D OF oJan DEFINE BUTTON OF oBar ; ACTION FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) SET MESSAGE OF oJan TO "Find Cep" NOINSET CLOCK DATE KEYBOARD ACTIVATE WINDOW oJan return nil function FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) Local oPg, cBuf, tmp, aRet := array(7) Local xCep, mcepx, xComando Local mestado, mCidade, mxBairro, mxEndere LOCAL MENDERE, MBAIRRO, MCOD_CIDADE, MIBGEUF, DCEP aFill(aRet,'') cbuf :=space(255) xcep := (cCep) //? cCepa //mcepa = alltrim(tiratraco(ccepa)) // cade a funcao mcepx = alltrim(xcep) If Empty(xCep) .Or. Len(AllTrim(xCep)) <= 1 MsgGet( "É Preciso Digitar o Cep","CEP",@xCEP,,"CEP") xCep := (xCep) mcepx = alltrim(xcep) End //if internet_ok("www.terra.com.br",80) // cade a funcao?? IF ISINTERNET() if xCep <> "00000000" oPg := CreateObject("Microsoft.XMLHTTP") xComando := "https://viacep.com.br/ws/" + xCEP + "/xml" oPg:Open("GET",xComando,.f.) oPg:Send() cBuf := oPg:responseBody if .f. // rtrim(substr(cBuf, at('<resultado_txt>', cBuf)+15, 7)) <> "sucesso" MsgInfo("CEP não encontrado, favor verificar....","Busca") cBuf = space(255) return .t. endif endif mestado := AllTrim((substr(cBuf, at('<uf>', cBuf) + 4, 2))) mCidade := AllTrim((substr(cBuf, at('<localidade>', cBuf) + 12, at('</localidade>', cBuf) - (at('<localidade>', cBuf) + 12)))) mxBairro := AllTrim((substr(cBuf, at('<bairro>', cBuf) + 8, at('</bairro>', cBuf) - (at('<bairro>', cBuf) + 8)))) mxEndere := AllTrim((substr(cBuf, at('<tipo_logradouro>', cBuf) + 17, at('</tipo_logradouro>', cBuf) - (at('<tipo_logradouro>', cBuf) + 17)))) mxendere += " "+((substr(cBuf, at('<logradouro>', cBuf) + 12, at('</logradouro>', cBuf) - (at('<logradouro>', cBuf) + 12)))) mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro )) mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade )) if empty(mxEndere) if MsgYesNo("Cidade sem Logradouro nos Correios, Confirma troca ?") mEndere := mxendere mBairro := mxBairro Else Return .f. endif else mEndere := mxendere mBairro := mxBairro endif mCod_cidade := upper((substr(cBuf,at('<ibge_municipio_verificador>', cBuf) + 28, 07))) mIbgeUF := upper((substr(cBuf, at('<ibge_uf>', cBuf)+ 9, 02))) dEnd := Substr(mEndere+space(40),1,40) dBai := Substr(mBairro+space(30),1,40) dCid := Substr(mCidade+space(50),1,50) dEst := Substr(mestado+space(2),1,2) dCep := SubStr(xCep,1) // ,5)+"-"+SubStr(xCep,6) ? dEnd, dBai, dCid, dEst, dCep oJan:Update() // oJan:Display() //??? Nao entendi... O que faz isso? Quebrou. //SysRefresh() // Porque? Tem algum looping aqui? endif return .t. function tiratraco(ccepa) // cade a funcao? return nil abs Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 16, 2015 Report Share Posted September 16, 2015 Nem assim tira a acentuação... #include "FiveWin.ch" REQUEST HB_LANG_PT REQUEST HB_CODEPAGE_PTISO REQUEST HB_CODEPAGE_PT850 static oJan //----------------------------------------------------------------// function Main() local oBar, cCep, ccepa, dEnd, dBai, dCid, dEst HB_LANGSELECT("PT") HB_SETCODEPAGE( "PT850" ) HB_SETCODEPAGE("PTISO") cCep := "01313-000" ccepa := "01313000" //??? sem traco //oJan := oWnd //??? dEnd := SPACE(40) dBai := SPACE(20) dCid := SPACE(20) dEst := SPACE(02) DEFINE WINDOW oJan TITLE "Find Cep" DEFINE BUTTONBAR oBar _3D OF oJan DEFINE BUTTON OF oBar ; ACTION FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) SET MESSAGE OF oJan TO "Find Cep" NOINSET CLOCK DATE KEYBOARD ACTIVATE WINDOW oJan return nil function FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) Local oPg, cBuf, tmp, aRet := array(7) Local xCep, mcepx, xComando Local mestado, mCidade, mxBairro, mxEndere LOCAL MENDERE, MBAIRRO, MCOD_CIDADE, MIBGEUF, DCEP aFill(aRet,'') cbuf :=space(255) xcep := (cCep) //? cCepa //mcepa = alltrim(tiratraco(ccepa)) // cade a funcao mcepx = alltrim(xcep) If Empty(xCep) .Or. Len(AllTrim(xCep)) <= 1 MsgGet( "É Preciso Digitar o Cep","CEP",@xCEP,,"CEP") xCep := (xCep) mcepx = alltrim(xcep) End //if internet_ok("www.terra.com.br",80) // cade a funcao?? IF ISINTERNET() if xCep <> "00000000" oPg := CreateObject("Microsoft.XMLHTTP") xComando := "https://viacep.com.br/ws/" + xCEP + "/xml" oPg:Open("GET",xComando,.f.) oPg:Send() cBuf := oPg:responseBody if .f. // rtrim(substr(cBuf, at('<resultado_txt>', cBuf)+15, 7)) <> "sucesso" MsgInfo("CEP não encontrado, favor verificar....","Busca") cBuf = space(255) return .t. endif endif mestado := AllTrim((substr(cBuf, at('<uf>', cBuf) + 4, 2))) mCidade := AllTrim((substr(cBuf, at('<localidade>', cBuf) + 12, at('</localidade>', cBuf) - (at('<localidade>', cBuf) + 12)))) mxBairro := AllTrim((substr(cBuf, at('<bairro>', cBuf) + 8, at('</bairro>', cBuf) - (at('<bairro>', cBuf) + 8)))) mxEndere := AllTrim((substr(cBuf, at('<tipo_logradouro>', cBuf) + 17, at('</tipo_logradouro>', cBuf) - (at('<tipo_logradouro>', cBuf) + 17)))) mxendere += " "+((substr(cBuf, at('<logradouro>', cBuf) + 12, at('</logradouro>', cBuf) - (at('<logradouro>', cBuf) + 12)))) mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro )) mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade ), ,"PTISO" ) // ? mCidade if empty(mxEndere) if MsgYesNo("Cidade sem Logradouro nos Correios, Confirma troca ?") mEndere := mxendere mBairro := mxBairro Else Return .f. endif else mEndere := mxendere mBairro := mxBairro endif mCod_cidade := upper((substr(cBuf,at('<ibge_municipio_verificador>', cBuf) + 28, 07))) mIbgeUF := upper((substr(cBuf, at('<ibge_uf>', cBuf)+ 9, 02))) dEnd := Substr(mEndere+space(40),1,40) dBai := Substr(mBairro+space(30),1,40) //dCid := Substr(mCidade+space(50),1,50) //dCid := HB_UTF8TOSTR( Substr(mCidade+space(50),1,50),"PTISO" ) dCid := TIRA_ACENTUACAO( mCidade ) dEst := Substr(mestado+space(2),1,2) dCep := SubStr(xCep,1) // ,5)+"-"+SubStr(xCep,6) ? dEnd, dBai, dCid, dEst, dCep oJan:Update() // oJan:Display() //??? Nao entedi... //SysRefresh() // Porque? Tem algum looping aqui? endif return .t. function tiratraco(ccepa) // cade a funcao? return nil FUNCTION TIRA_ACENTUACAO( cStr ) local cStrNew := "", nX cAcentos := {"—","ƒ","Æ","Ç"," ","µ","…","·","‚","É","ê","ˆ","","Ò","í","Í","ó","¢","à","ä","å","“","â","ú","é","","š","ç","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª","€","‡","Ç","ç","'","`","ø","¡","Þ","×","Ø", chr(239)} cLetras := {"U","A","A","A","A","A","A","A","E","E","E","E","E","E","I","I","O","O","O","O","O","O","O","U","U","U","U","C","C","A","A","A","A","A","A","E","E","E","E","I","I","O","O","O","O","O","O","U","U","U","U","C"," ","CAO",".",".",".",".","C","C","C","C","" ,"" ,".","I","I","I","I", "" } For nX := 1 TO LEN(cAcentos) cStrNew := StrTran(cStr, cAcentos[nX], cLetras[nX]) cStr := cStrNew Next Return( cStrNew ) Quote Link to comment Share on other sites More sharing options...
Marca Posted September 16, 2015 Report Share Posted September 16, 2015 Nem assim tira a acentuação... #include "FiveWin.ch" REQUEST HB_LANG_PT REQUEST HB_CODEPAGE_PTISO REQUEST HB_CODEPAGE_PT850 static oJan //----------------------------------------------------------------// function Main() local oBar, cCep, ccepa, dEnd, dBai, dCid, dEst HB_LANGSELECT("PT") HB_SETCODEPAGE( "PT850" ) HB_SETCODEPAGE("PTISO") cCep := "01313-000" ccepa := "01313000" //??? sem traco //oJan := oWnd //??? dEnd := SPACE(40) dBai := SPACE(20) dCid := SPACE(20) dEst := SPACE(02) DEFINE WINDOW oJan TITLE "Find Cep" DEFINE BUTTONBAR oBar _3D OF oJan DEFINE BUTTON OF oBar ; ACTION FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) SET MESSAGE OF oJan TO "Find Cep" NOINSET CLOCK DATE KEYBOARD ACTIVATE WINDOW oJan return nil function FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) Local oPg, cBuf, tmp, aRet := array(7) Local xCep, mcepx, xComando Local mestado, mCidade, mxBairro, mxEndere LOCAL MENDERE, MBAIRRO, MCOD_CIDADE, MIBGEUF, DCEP aFill(aRet,'') cbuf :=space(255) xcep := (cCep) //? cCepa //mcepa = alltrim(tiratraco(ccepa)) // cade a funcao mcepx = alltrim(xcep) If Empty(xCep) .Or. Len(AllTrim(xCep)) <= 1 MsgGet( "É Preciso Digitar o Cep","CEP",@xCEP,,"CEP") xCep := (xCep) mcepx = alltrim(xcep) End //if internet_ok("www.terra.com.br",80) // cade a funcao?? IF ISINTERNET() if xCep <> "00000000" oPg := CreateObject("Microsoft.XMLHTTP") xComando := "https://viacep.com.br/ws/" + xCEP + "/xml" oPg:Open("GET",xComando,.f.) oPg:Send() cBuf := oPg:responseBody if .f. // rtrim(substr(cBuf, at('<resultado_txt>', cBuf)+15, 7)) <> "sucesso" MsgInfo("CEP não encontrado, favor verificar....","Busca") cBuf = space(255) return .t. endif endif mestado := AllTrim((substr(cBuf, at('<uf>', cBuf) + 4, 2))) mCidade := AllTrim((substr(cBuf, at('<localidade>', cBuf) + 12, at('</localidade>', cBuf) - (at('<localidade>', cBuf) + 12)))) mxBairro := AllTrim((substr(cBuf, at('<bairro>', cBuf) + 8, at('</bairro>', cBuf) - (at('<bairro>', cBuf) + 8)))) mxEndere := AllTrim((substr(cBuf, at('<tipo_logradouro>', cBuf) + 17, at('</tipo_logradouro>', cBuf) - (at('<tipo_logradouro>', cBuf) + 17)))) mxendere += " "+((substr(cBuf, at('<logradouro>', cBuf) + 12, at('</logradouro>', cBuf) - (at('<logradouro>', cBuf) + 12)))) mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro )) mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade ), ,"PTISO" ) // ? mCidade if empty(mxEndere) if MsgYesNo("Cidade sem Logradouro nos Correios, Confirma troca ?") mEndere := mxendere mBairro := mxBairro Else Return .f. endif else mEndere := mxendere mBairro := mxBairro endif mCod_cidade := upper((substr(cBuf,at('<ibge_municipio_verificador>', cBuf) + 28, 07))) mIbgeUF := upper((substr(cBuf, at('<ibge_uf>', cBuf)+ 9, 02))) dEnd := Substr(mEndere+space(40),1,40) dBai := Substr(mBairro+space(30),1,40) //dCid := Substr(mCidade+space(50),1,50) //dCid := HB_UTF8TOSTR( Substr(mCidade+space(50),1,50),"PTISO" ) dCid := TIRA_ACENTUACAO( mCidade ) dEst := Substr(mestado+space(2),1,2) dCep := SubStr(xCep,1) // ,5)+"-"+SubStr(xCep,6) ? dEnd, dBai, dCid, dEst, dCep oJan:Update() // oJan:Display() //??? Nao entedi... //SysRefresh() // Porque? Tem algum looping aqui? endif return .t. function tiratraco(ccepa) // cade a funcao? return nil FUNCTION TIRA_ACENTUACAO( cStr ) local cStrNew := "", nX cAcentos := {"—","ƒ","Æ","Ç"," ","µ","…","·","‚","É","ê","ˆ","","Ò","í","Í","ó","¢","à","ä","å","“","â","ú","é","","š","ç","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª","€","‡","Ç","ç","'","`","ø","¡","Þ","×","Ø", chr(239)} cLetras := {"U","A","A","A","A","A","A","A","E","E","E","E","E","E","I","I","O","O","O","O","O","O","O","U","U","U","U","C","C","A","A","A","A","A","A","E","E","E","E","I","I","O","O","O","O","O","O","U","U","U","U","C"," ","CAO",".",".",".",".","C","C","C","C","" ,"" ,".","I","I","I","I", "" } For nX := 1 TO LEN(cAcentos) cStrNew := StrTran(cStr, cAcentos[nX], cLetras[nX]) cStr := cStrNew Next Return( cStrNew ) mCidade := AllTrim((substr(cBuf, at('<localidade>', cBuf) + 12, at('</localidade>', cBuf) - (at('<localidade>', cBuf) + 12)))) Seria assim mCidade := HB_UTF8ToStr( mCidade , "PTISO" ) Quote Link to comment Share on other sites More sharing options...
Theotokos Posted September 17, 2015 Report Share Posted September 17, 2015 mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro )) mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade )) Estas linha deveriam converter os dados com a acentuação. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 Theotokos, poste a função TIRATRACO() porfa Quote Link to comment Share on other sites More sharing options...
Theotokos Posted September 17, 2015 Report Share Posted September 17, 2015 Theotokos, poste a função TIRATRACO() porfa Theotokos, poste a função TIRATRACO() porfa Function TiraTraco(xStr) xStr := StrTran(xStr,"-","") Return(xStr) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 Resolvido: #include "FiveWin.ch" REQUEST HB_LANG_PT REQUEST HB_CODEPAGE_PTISO REQUEST HB_CODEPAGE_PT850 static oJan //----------------------------------------------------------------// function Main() local oBar, cCep, ccepa, dEnd, dBai, dCid, dEst HB_LANGSELECT("PT") HB_SETCODEPAGE( "PT850" ) HB_SETCODEPAGE("PTISO") cCep := "01313-000" ccepa := "01313-000" //??? sem traco //oJan := oWnd //??? dEnd := SPACE(50) dBai := SPACE(30) dCid := SPACE(30) dEst := SPACE(02) DEFINE WINDOW oJan TITLE "Find Cep" DEFINE BUTTONBAR oBar _3D OF oJan DEFINE BUTTON OF oBar ; ACTION FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) SET MESSAGE OF oJan TO "Find Cep" NOINSET CLOCK DATE KEYBOARD ACTIVATE WINDOW oJan return nil function FindCEP( cCep, ccepa, oJan, dEnd, dBai, dCid, dEst ) Local oPg, cBuf, tmp, aRet := array(7) Local xCep, mcepx, xComando, mcepa Local mestado, mCidade, mxBairro, mxEndere LOCAL MENDERE, MBAIRRO, MCOD_CIDADE, MIBGEUF, DCEP aFill(aRet,'') cbuf :=space(255) xcep := (cCep) mcepa = alltrim(tiratraco(ccepa)) // cade a funcao mcepx = alltrim(xcep) If Empty(xCep) .Or. Len(AllTrim(xCep)) <= 1 MsgGet( "É Preciso Digitar o Cep","CEP",@xCEP,,"CEP") xCep := (xCep) mcepx = alltrim(xcep) End //if internet_ok("www.terra.com.br",80) // cade a funcao?? IF ISINTERNET() if xCep <> "00000000" oPg := CreateObject("Microsoft.XMLHTTP") xComando := "https://viacep.com.br/ws/" + xCEP + "/xml" oPg:Open("GET",xComando,.f.) oPg:Send() cBuf := oPg:responseBody if .f. // rtrim(substr(cBuf, at('<resultado_txt>', cBuf)+15, 7)) <> "sucesso" MsgInfo("CEP não encontrado, favor verificar....","Busca") cBuf = space(255) return .t. endif endif mestado := AllTrim((substr(cBuf, at('<uf>', cBuf) + 4, 2))) mCidade := AllTrim((substr(cBuf, at('<localidade>', cBuf) + 12, at('</localidade>', cBuf) - (at('<localidade>', cBuf) + 12)))) mxBairro := AllTrim((substr(cBuf, at('<bairro>', cBuf) + 8, at('</bairro>', cBuf) - (at('<bairro>', cBuf) + 8)))) mxEndere := AllTrim((substr(cBuf, at('<tipo_logradouro>', cBuf) + 17, at('</tipo_logradouro>', cBuf) - (at('<tipo_logradouro>', cBuf) + 17)))) mxendere += " "+((substr(cBuf, at('<logradouro>', cBuf) + 12, at('</logradouro>', cBuf) - (at('<logradouro>', cBuf) + 12)))) mxBairro := HB_OemToAnsi( HB_UTF8ToStr( mxBairro )) mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) // mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade ), ,"PTISO" ) // mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade )) mCidade := HB_UTF8ToStr( mCidade ) if empty(mxEndere) if MsgYesNo("Cidade sem Logradouro nos Correios, Confirma troca ?") mEndere := mxendere mBairro := mxBairro Else Return .f. endif else mEndere := mxendere mBairro := mxBairro endif mCod_cidade := upper((substr(cBuf,at('<ibge_municipio_verificador>', cBuf) + 28, 07))) mIbgeUF := upper((substr(cBuf, at('<ibge_uf>', cBuf)+ 9, 02))) dEnd := Substr(mEndere+space(40),1,40) dBai := Substr(mBairro+space(30),1,40) dCid := Substr(mCidade+space(50),1,50) //dCid := HB_UTF8TOSTR( Substr(mCidade+space(50),1,50),"PTISO" ) dEst := Substr(mestado+space(2),1,2) dCep := SubStr(xCep,1) // ,5)+"-"+SubStr(xCep,6) ? dEnd, dBai, dCid, dEst, dCep oJan:Update() // oJan:Display() // ??? Nao entedi... // SysRefresh() // Porque? Tem algum looping aqui? endif return .t. Function TiraTraco(xStr) xStr := StrTran(xStr,"-","") Return(xStr) Obg. abs. Quote Link to comment Share on other sites More sharing options...
betovsp Posted September 17, 2015 Report Share Posted September 17, 2015 Olá João. Só peguei a sua função, copiei e colei, e continua mostrando caracteres errados na cidade. Tente com um cep aqui de ribeirão: 14056-701, veja se retorna Ribeirão Preto corretamente por favor. Beto. Ps.: Testando agora, fiz assim e funcionou: mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade )) Vlw Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 Fala Beto, só o nome da Rua não ficou legal na versão FWHX15.05, Veja: abs Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 Beto: //mxEndere := AllTrim( HB_OemToAnsi( HB_UTF8ToStr( mxEndere )) ) mxEndere := AllTrim( HB_UTF8ToStr( mxEndere ) ) abs. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 Beto se quiser postar imagens de alta qualidade, cadastre-se aqui: http://imgur.com Abs Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 Muito louco, mudaram agluma coisa, vejam: // EM FWH13.06 FUNCIONA ASSIM mCidade := HB_OemToAnsi( HB_UTF8ToStr( mCidade )) // EM FWH15.05 FUNCIONA ASSIM mCidade := HB_UTF8ToStr( mCidade ) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 17, 2015 Report Share Posted September 17, 2015 O Importante é que este funciona de boas. Meu muito Obrigado ao Theotokos. Mas se mudar para versão 2015... Tem que mudar a função. abs. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
betovsp Posted September 18, 2015 Report Share Posted September 18, 2015 O Importante é que este funciona de boas. Meu muito Obrigado ao Theotokos. Mas se mudar para versão 2015... Tem que mudar a função. abs. Com certeza nosso agradecimento ao Theotokos. Essas mudanças deixam a gente loucos né. Mas o que importa é que resolvemos o problema. Obrigado mais uma vez. Beto. Theotokos and kapiaba 2 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.