sexta-feira, 27 de fevereiro de 2015

Mapa Itinerário - Adriano

Mapa Itinerário - Adriano

http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/1010-mapadditinerary-windev-mobile-for-version-1023/read.awp


Procedures Google Maps and Uteis - AdrianoBoller

Procedures Google Maps and Uteis - AdrianoBoller

http://forum.pcsoft.fr/fr-FR/pcsoft.es.webdev/697-procedures-googlemaps-and-uteis/read.awp





=================== FONTE FEITA POR ADRIANO BOLLER ===================


Posté le 18 septembre 2014 - 20:54
//////////////////////////////////////////////////////////////////////////////////////////
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller
//////////////////////////////////////////////////////////////////////////////////////////

//Procedures GoogleMaps and Uteis

PROCEDURE WS_CEP_Rota(LOCAL Origem, LOCAL Destino, LOCAL DebugSN)

//dr+goulin+1699+curitiba+PR
//jose+lopacinsk+500+curitiba+PR

IF Origem <> "" AND Destino = "" THEN
Destino = Origem
END

nVirgula is int = 0

//VARIAIVEIS
nID_Numero is int = 1
nID_Endereco is int = 1
nID_Bairro01 is int = 1 
nID_Bairro02 is int = 1
nID_Cidade01 is int = 1
nID_Cidade02 is int = 1
nID_Estado is int = 1
nID_Pais is int = 1
nID_CEP is int = 1
nQTD_ADDRESS_COMPONENT is int = 0

//Limpa variaveis
//Endereço de Origem
GloVoceEnderecoLongo = ""
GloDestinoEnderecoLongo = ""
GloVoceLatitude = 0
GloVoceLongitude = 0
GloDestinoLatitude = 0
GloDestinoLongitude = 0

//Norte
GloLatitudeNorte = ""
GloLongitudeNorte = ""

//Sul
GloLatitudeSul = ""
GloLongitudeSul = ""

//Tempo
GloTempoDestino = ""
GloTempoDestinoText = ""
GloTempoTaxi = ""

//Distancia
GloDistanciaDestino = ""
GloDistanciaDestinoText = ""
GloDistanciaTaxi = ""

//Rota
//GloDebugSN, GloVoceEnderecoLongo, GloVoceEndereco, GloDestinoEnderecoLongo, GloDestinoEndereco, GloTempoDestino, GloTempoDestinoText, GloTempoTaxi, GloDistanciaDestino, GloDistanciaDestinoText, GloDistanciaTaxi, GloVoceLatitude, GloVoceLongitude, GloDestinoLatitude, GloDestinoLongitude, GloLatitudeNorte, GloLongitudeNorte, GloLatitudeSul, GloLongitudeSul is string 

//Origem
LocEnderecoOrigem, LocEnderecoCurtoOrigem, LocNumeroOrigem, LocBairro01Origem, LocBairro02Origem, LocCidade01Origem, LocCidade02Origem, LocEstadoOrigem, LocPaisOrigem, LocCepOrigem, LocLatitudeOrigem, LocLongitudeOrigem, LocLatitudeOrigemNorte, LocLongitudeOrigemNorte, LocLatitudeOrigemSul, LocLongitudeOrigemSul is string = ""


//Destino
LocEnderecoDestino, LocEnderecoCurtoDestino, LocNumeroDestino, LocBairro01Destino, LocBairro02Destino, LocCidade01Destino, LocCidade02Destino, LocEstadoDestino, LocPaisDestino, LocCepDestino, LocLatitudeDestino, LocLongitudeDestino, LocLatitudeDestinoNorte, LocLongitudeDestinoNorte, LocLatitudeDestinoSul, LocLongitudeDestinoSul is string = ""


ok is boolean = False

IF Origem <> "" AND Destino <> "" 

ChangeCharset(charsetOccidental) // SEM ACENTO

Origem = Replace(Origem," ","+")

Origem = WS_RemoveAcentos(Origem)

Destino = Replace(Destino," ","+")

Destino = WS_RemoveAcentos(Destino)

//Aceita endereço e lat e long na origem e destino
UrlRota is string = "http://maps.googleapis.com/maps/api/directions/xml…"
//LOOP (3)
ok = HTTPRequest(UrlRota)
IF ok = True THEN
//BREAK
END
//END

//Rota
IF ok = True THEN

XmlResultado is string = HTTPGetResult(httpResult)

IF PositionOccurrence(XmlResultado,"<status>OK</status>",firstRank,FromBeginning) > 0 OR PositionOccurrence(XmlResultado,"<status>ok</status>",firstRank,FromBeginning) > 0

IF XmlResultado <> "" THEN

sXmlResultadoRecorte is string = XmlResultado

//Xml No final
XmlDoc01 is xmlDocument
XmlDoc01 = XMLOpen(sXmlResultadoRecorte,fromString)


//Norte
GloLatitudeNorte = XmlDoc01.DirectionsResponse.route.bounds.northeast.lat
GloLongitudeNorte = XmlDoc01.DirectionsResponse.route.bounds.northeast.lng

//Sul
GloLatitudeSul = XmlDoc01.DirectionsResponse.route.bounds.southwest.lat
GloLongitudeSul = XmlDoc01.DirectionsResponse.route.bounds.southwest.lng


//IMPORTANTE LIMPAR O XML 
XmlResultado = WS_RemoveAcentos(XmlResultado) // retirou caracteres especiais 
XmlResultado = WS_RemoveCaracteresRota(XmlResultado) // retirou os steps

//Corta inicio
//////////////////////////////////////////////////////////////////////////////////////
nInicio is int = PositionOccurrence(XmlResultado,"</step>",lastRank,FromBeginning) + 7
XmlResultado = Middle(XmlResultado,nInicio,Length(XmlResultado))
XmlResultado = "<leg>"+XmlResultado

//Corta fim
nFim is int = PositionOccurrence(XmlResultado,"</leg>",firstRank,FromBeginning) + 5
XmlResultado = Middle(XmlResultado,1,nFim)
//////////////////////////////////////////////////////////////////////////////////////

//XML Leitura
XmlDoc02 is xmlDocument
XmlDoc02 = XMLOpen(XmlResultado,fromString)

//Endereço de Origem
GloVoceEnderecoLongo = XmlDoc02.leg.start_address
GloVoceEnderecoLongo = Capitalize(GloVoceEnderecoLongo)

//Endereço de Destino
GloDestinoEnderecoLongo = XmlDoc02.leg.end_address
GloDestinoEnderecoLongo = Capitalize(GloDestinoEnderecoLongo)

//Tempo
GloTempoDestino = XmlDoc02.leg.duration.value
GloTempoDestinoText = XmlDoc02.leg.duration.text
GloTempoTaxi = GloTempoDestino

//Distancia
GloDistanciaDestino = XmlDoc02.leg.distance.value
GloDistanciaDestinoText = XmlDoc02.leg.distance.text
GloDistanciaTaxi = GloDistanciaDestino

//Origem
IF XmlDoc02.leg.start_location.lat < 0 //AND gnPlane = 1 THEN //nao pode alterar no plano 2

GloVoceLatitude = XmlDoc02.leg.start_location.lat
LocLatitudeOrigem = GloVoceLatitude

GloVoceLongitude = XmlDoc02.leg.start_location.lng
LocLongitudeOrigem = GloVoceLongitude

END

//Destino
IF XmlDoc02.leg.end_location.lat < 0 THEN

GloDestinoLatitude = XmlDoc02.leg.end_location.lat

GloDestinoLongitude = XmlDoc02.leg.end_location.lng

END



END


ELSE
GloDestinoEndereco = ""
GloDestinoEnderecoLongo = ""

GloTempoDestino = ""
GloDistanciaDestino = ""
END

END


END

IF DebugSN = "S" OR GloDebugSN = "S" THEN
Info("Origem:",GloVoceEnderecoLongo,GloVoceEndereco,"","Destino:",GloDestinoEnderecoLongo,GloDestinoEndereco,"","Tempo: "+GloTempoDestino,"Distancia: "+GloDistanciaDestino,"","Latitude Origem: "+GloVoceLatitude,"Longitute Origem: "+GloVoceLongitude,"","Latitude Destino: "+GloDestinoLatitude,"Longitude Destino: "+GloDestinoLongitude)
Info("Origem:", LocEnderecoOrigem,"", LocEnderecoCurtoOrigem, LocNumeroOrigem, LocBairro01Origem, LocBairro02Origem, LocCidade01Origem, LocCidade02Origem, LocEstadoOrigem, LocPaisOrigem, LocCepOrigem,"", LocLatitudeOrigem, LocLongitudeOrigem,"", LocLatitudeOrigemNorte, LocLongitudeOrigemNorte, LocLatitudeOrigemSul, LocLongitudeOrigemSul)
Info("Destino:", LocEnderecoDestino,"", LocEnderecoCurtoDestino, LocNumeroDestino, LocBairro01Destino, LocBairro02Destino, LocCidade01Destino, LocCidade02Destino, LocEstadoDestino, LocPaisDestino, LocCepDestino,"", LocLatitudeDestino, LocLongitudeDestino,"", LocLatitudeDestinoNorte, LocLongitudeDestinoNorte, LocLatitudeDestinoSul, LocLongitudeDestinoSul)
END

//Exemplo: Curitiba - Parana --- ( - )
IF QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1
GloVoceEndereco = ""
GloVoceNumero = ""
GloVoceEnderecoLongo = "ERRO"
END
IF QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1
GloDestinoEndereco = ""
GloDestinoNumero = "" 
GloDestinoEnderecoLongo = "ERRO"
END
// if GloVoceEnderecoLongo = "ERRO" or GloDestinoEnderecoLongo = "ERRO"
// Info("Endereço inválido")
// END

RESULT(GloVoceEnderecoLongo)





--------------------------------------------------------------
--------------------------------------------------------------
--------------------------------------------------------------
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller

PROCEDURE WS_ExtrairEndereco(endereco)

IF GloDebugSN = "S" THEN
NextTitle("Extrair Endereço")
Info("WS_ExtrairEndereco",endereco)
END

sRua, sNumero, sBairro, sCidade, sEstado, sPais, sCep is string = ""

IF endereco <> ""

endereco = Replace(endereco,"State Of", "")

//Separador - das 3 colunas
arrSplitArray is array of strings
StringToArray(endereco, arrSplitArray," - ")
// FOR EACH string sExtracColunn, nRank of endereco SEPAREE by " - "
//
// add(arrSplitArray, sExtracColunn)
//
// END

IF ArrayCount(arrSplitArray) = 3

//Separador , da rua e numero
arrSplitRuaNumeroArray is array of strings
StringToArray(arrSplitArray[1], arrSplitRuaNumeroArray,",")
// FOR EACH STRING sExtracEnd, nRank of arrSplitArray[1] SEPAREE by ","
//
// Add(arrSplitRuaNumeroArray, sExtracEnd)
//
// END


IF ArrayCount(arrSplitRuaNumeroArray) = 1

sRua = arrSplitRuaNumeroArray[1];

sNumero = "0";

ELSE IF ArrayCount(arrSplitRuaNumeroArray) = 2

sRua = arrSplitRuaNumeroArray[1];

IF PositionOccurrence(arrSplitRuaNumeroArray[2],"-",firstRank) > 0 THEN

arrSplitNumeroArray is array of strings
StringToArray(arrSplitRuaNumeroArray[2], arrSplitNumeroArray,"-")

WHEN EXCEPTION IN
Media is int = (Val(arrSplitNumeroArray[1]) + Val(arrSplitNumeroArray[2])) / 2
DO
sNumero = 0
ELSE
sNumero = Media
END


ELSE

sNumero = arrSplitRuaNumeroArray[2];

END

END


///// 
//Separador , do bairro e cidade
arrSplitBairroCidadeArray is array of strings
StringToArray(arrSplitArray[2], arrSplitBairroCidadeArray,",")
// FOR EACH STRING sExtracBairroCidade, nRank of arrSplitArray[2] SEPAREE by ","
//
// Add(arrSplitBairroCidadeArray, sExtracBairroCidade)
//
// END

IF ArrayCount(arrSplitBairroCidadeArray) = 2

sBairro =arrSplitBairroCidadeArray[1];
sCidade = arrSplitBairroCidadeArray[2];

ELSE IF (ArrayCount(arrSplitBairroCidadeArray) = 3)

sBairro = arrSplitBairroCidadeArray[1];
sCidade = arrSplitBairroCidadeArray[3];

ELSE

sBairro = "";
sCidade = "";

END

//Separador , do bairro e cidade
arrSplitEstadoCepPaisArray is array of strings
StringToArray(arrSplitArray[3], arrSplitEstadoCepPaisArray,",")
// FOR EACH STRING sExtracEstadoCepPais, nRank of arrSplitArray[3] SEPAREE by ","
//
// Add(arrSplitEstadoCepPaisArray,sExtracEstadoCepPais)
//
// END

IF ArrayCount(arrSplitEstadoCepPaisArray) = 2

sEstado = arrSplitEstadoCepPaisArray[1];
sPais = arrSplitEstadoCepPaisArray[2];
sCep = ""

ELSE IF ArrayCount(arrSplitEstadoCepPaisArray)= 3

sEstado = arrSplitEstadoCepPaisArray[1];
sCep = arrSplitEstadoCepPaisArray[2];
sPais = arrSplitEstadoCepPaisArray[3];
ELSE

sEstado = ""
sCep = ""
sPais = ""

END

END

END

//Replace Estado
sEstado = Capitalize(Clip(sEstado))
IF sEstado <> ""

IF sEstado = "Acre" THEN
sEstado = "AC"
ELSE IF sEstado = "Alagoas" THEN
sEstado = "AL" 
ELSE IF sEstado = "Amazonas" THEN
sEstado = "AM" 
ELSE IF sEstado = "Amapa" THEN
sEstado = "AP" 
ELSE IF sEstado = "Bahia" THEN
sEstado = "BA"
ELSE IF sEstado = "Ceara" THEN
sEstado = "CE"
ELSE IF sEstado = "Distrito Federal" THEN
sEstado = "DF"
ELSE IF sEstado = "Espirito Santo" THEN
sEstado = "ES"
ELSE IF sEstado = "Goias" THEN
sEstado = "GO"
ELSE IF sEstado = "Maranhao" THEN
sEstado = "MA"
ELSE IF sEstado = "Minas Gerais" THEN
sEstado = "MG"
ELSE IF sEstado = "Mato Grosso do Sul" THEN
sEstado = "MS"
ELSE IF sEstado = "Mato Grosso" THEN
sEstado = "MT"
ELSE IF sEstado = "Parana" THEN
sEstado = "PR"
ELSE IF sEstado = "Para" THEN
sEstado = "PA"
ELSE IF sEstado = "Paraiba" THEN
sEstado = "PB"
ELSE IF sEstado = "Pernambuco" THEN
sEstado = "PE"
ELSE IF sEstado = "Piaui" THEN
sEstado = "PI"
ELSE IF sEstado = "Rio de Janeiro" THEN
sEstado = "RJ"
ELSE IF sEstado = "Rio Grande DO Norte" THEN
sEstado = "RN"
ELSE IF sEstado = "Rondonia" THEN
sEstado = "RO"
ELSE IF sEstado = "Roraima" THEN
sEstado = "RR"
ELSE IF sEstado = "Rio Grande DO Sul" THEN
sEstado = "RS"
ELSE IF sEstado = "Santa Catarina" THEN
sEstado = "SC"
ELSE IF sEstado = "Sergipe" THEN
sEstado = "SE"
ELSE IF sEstado = "Sao Paulo" THEN
sEstado = "SP"
ELSE IF sEstado = "Tocantins" THEN
sEstado = "TO"
END

END


arrResult is array of strings

Add(arrResult, Capitalize(Clip(sRua)))
Add(arrResult, Clip(sNumero))
Add(arrResult, Capitalize(Clip(sBairro)))
Add(arrResult, Capitalize(Clip(sCidade)))
Add(arrResult, Capitalize(Clip(sEstado)))
Add(arrResult, Clip(sCep))
Add(arrResult, Capitalize(Clip(sPais)))

IF GloDebugSN = "S" THEN
NextTitle("Extrair Endereço")
Info(arrResult[1],arrResult[2],arrResult[3],arrResult[4],arrResult[5],arrResult[6],arrResult[7])
END

RESULT arrResult


-------------------------------------------------------------------
-------------------------------------------------------------------
-------------------------------------------------------------------
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller

PROCEDURE WS_RemoveAcentos(LOCAL Texto)

ChangeCharset(charsetOccidental) // SEM ACENTO

nTamanho is int = Length(Texto)

//VERIFICA
Texto = Replace(Texto,"ã","a")
Texto = Replace(Texto,"á","a")
Texto = Replace(Texto,"é","e")
Texto = Replace(Texto,"ê","e")
Texto = Replace(Texto,"Ê","e")
Texto = Replace(Texto,"A","A")
Texto = Replace(Texto,"A£","A")
Texto = Replace(Texto,"á","A")
Texto = Replace(Texto,"â","A")
Texto = Replace(Texto,"Ã","A")
Texto = Replace(Texto,"Ê","E")
Texto = Replace(Texto,"é","E")
Texto = Replace(Texto,"ê","E")
Texto = Replace(Texto,"í","I")
Texto = Replace(Texto,"ô","O")
Texto = Replace(Texto,"Aµ","O")
Texto = Replace(Texto,"ó","O")
Texto = Replace(Texto,"A“","O")
Texto = Replace(Texto,"Aº","U")
Texto = Replace(Texto,"ç","C")
Texto = Replace(Texto,"Ç","C")
Texto = Replace(Texto,"ãO","AO")
Texto = Replace(Texto,"É","E")
Texto = Replace(Texto,"Ã%","E")
Texto = Replace(Texto,"A£","a")
Texto = Replace(Texto,"£","")
Texto = Replace(Texto,"","")
Texto = Replace(Texto,"¡","")
Texto = Replace(Texto,"¢","")
Texto = Replace(Texto,"õ","O")
Texto = Replace(Texto,"µ","O")
Texto = Replace(Texto,"Áº","u")
Texto = Replace(Texto,"Aº","u")
Texto = Replace(Texto,"º","u")

Texto = Replace(Texto,"ã","a")
Texto = Replace(Texto,"á","a")
Texto = Replace(Texto,"à","a")
Texto = Replace(Texto,"â","a")
Texto = Replace(Texto,"ä","a")

Texto = Replace(Texto,"~e","e")
Texto = Replace(Texto,"é","e")
Texto = Replace(Texto,"è","e")
Texto = Replace(Texto,"ê","e")
Texto = Replace(Texto,"ë","e")

Texto = Replace(Texto,"~i","i")
Texto = Replace(Texto,"í","i")
Texto = Replace(Texto,"ì","i")
Texto = Replace(Texto,"î","i")
Texto = Replace(Texto,"ï","i")

Texto = Replace(Texto,"õ","o")
Texto = Replace(Texto,"ó","o")
Texto = Replace(Texto,"ò","o")
Texto = Replace(Texto,"ô","o")
Texto = Replace(Texto,"ö","o")

Texto = Replace(Texto,"~u","u")
Texto = Replace(Texto,"ú","u")
Texto = Replace(Texto,"ù","u")
Texto = Replace(Texto,"û","u")
Texto = Replace(Texto,"ü","u")

Texto = Replace(Texto,"ç","c")
Texto = Replace(Texto,"Ç","C")

Texto = Replace(Texto,"Ã","A")
Texto = Replace(Texto,"Á","A")
Texto = Replace(Texto,"À","A")
Texto = Replace(Texto,"Â","A")
Texto = Replace(Texto,"Ä","A")

Texto = Replace(Texto,"~E","E")
Texto = Replace(Texto,"É","E")
Texto = Replace(Texto,"È","E")
Texto = Replace(Texto,"Ê","E")
Texto = Replace(Texto,"Ë","E")

Texto = Replace(Texto,"~I","I")
Texto = Replace(Texto,"Í","I")
Texto = Replace(Texto,"Ì","I")
Texto = Replace(Texto,"Î","I")
Texto = Replace(Texto,"Ï","I")

Texto = Replace(Texto,"Õ","O")
Texto = Replace(Texto,"Ó","O")
Texto = Replace(Texto,"Ò","O")
Texto = Replace(Texto,"Ô","O")
Texto = Replace(Texto,"Ö","O")

Texto = Replace(Texto,"~U","U")
Texto = Replace(Texto,"Ú","U")
Texto = Replace(Texto,"Ù","U")
Texto = Replace(Texto,"Û","U")
Texto = Replace(Texto,"Ü","U")

//Remove caracteres htmls
Texto = Replace(Texto,"&lt;","") //html
Texto = Replace(Texto,"&gt;","") //html
Texto = Replace(Texto,"&quot;","") //html
Texto = Replace(Texto,"&amp;","") //html
Texto = Replace(Texto,"&OElig;","") //html
Texto = Replace(Texto,"&oelig;","") //html
Texto = Replace(Texto,"&Scaron;","") //html
Texto = Replace(Texto,"&scaron;","") //html
Texto = Replace(Texto,"&Yuml;","") //html
Texto = Replace(Texto,"&circ;","") //html
Texto = Replace(Texto,"&tilde;","") //html
Texto = Replace(Texto,"&ensp;","") //html
Texto = Replace(Texto,"&emsp;","") //html
Texto = Replace(Texto,"&thinsp;","") //html
Texto = Replace(Texto,"&zwnj;","") //html
Texto = Replace(Texto,"&zwj;","") //html
Texto = Replace(Texto,"&lrm;","") //html
Texto = Replace(Texto,"&rlm;","") //html
Texto = Replace(Texto,"&ndash;","") //html
Texto = Replace(Texto,"&mdash;","") //html
Texto = Replace(Texto,"&lsquo;","") //html
Texto = Replace(Texto,"&rsquo;","") //html
Texto = Replace(Texto,"&sbquo;","") //html
Texto = Replace(Texto,"&ldquo;","") //html
Texto = Replace(Texto,"&rdquo;","") //html
Texto = Replace(Texto,"&bdquo;","") //html
Texto = Replace(Texto,"&dagger;","") //html
Texto = Replace(Texto,"&Dagger;","") //html
Texto = Replace(Texto,"&permil;","") //html
Texto = Replace(Texto,"&lsaquo;","") //html
Texto = Replace(Texto,"&rsaquo;","") //html
Texto = Replace(Texto,"&euro;","") //html

Texto = WS_RemoveCaractAscII(Texto)

Texto = Capitalize(Texto)

RESULT(Texto)


-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller

PROCEDURE WS_RemoveCaractAscII(LOCAL Texto is string)

nTotal is int = Length(Texto)
nPos01 is int = 0
Busca is string = ""

Texto = Replace(Texto,"<?xml version="+Charact(34)+"1.0"+Charact(34)+" encoding="+Charact(34)+"utf-8"+Charact(34)+"?>","<?xml version="+Charact(34)+"1.0"+Charact(34)+"?>")

sAZ09 is string = CR+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]0123456789'&*()_+=-,.!@#$%?>.<:{}|/\"+Charact(34)

Texto = Upper(Texto)

IF Texto <> "" AND sAZ09 <> Null THEN

LOOP (nTotal)

nPos01 += 1

IF nPos01 > 0 THEN

Busca = Texto[[nPos01]]

IF PositionOccurrence(sAZ09,Busca,firstRank,FromBeginning) = 0 AND sAZ09 <> Null AND Busca <> Null THEN
Texto[[nPos01]] = ""
END

END

END

END

RESULT(Texto)


--------------------------------------------------------------------------
--------------------------------------------------------------------------
--------------------------------------------------------------------------
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller

PROCEDURE Capitalize(LOCAL Texto)

ChangeCharset(charsetOccidental) // SEM ACENTO

IF Texto <> Null AND Texto <> ""
Texto = NoAccent(Texto)

Texto = Lower(Texto)

Texto = Upper(Middle(Texto,1,1)) + Middle(Texto,2,Length(Texto))

nEspaco01 is int = PositionOccurrence(Texto," ",firstRank,FromBeginning) + 1
IF nEspaco01 > 1 THEN
Texto = Middle(Texto,1,nEspaco01-1) + Upper(Middle(Texto,nEspaco01,1)) + Middle(Texto,nEspaco01+1,Length(Texto))
END


TOT is int = 0
POS1, POS2, POS3 is int = 0
TOT = Length(Texto)
LOOP (TOT)
POS1 +=1
POS2 = POS1 + 1
POS3 = POS2 + 1
IF Middle(Texto,POS1,1) = " " AND Middle(Texto,POS2,1) <> " " 
Texto = Middle(Texto,1,POS1) + Upper(Middle(Texto,POS2,1)) + Middle(Texto,POS3,TOT)
END
END


Texto = Replace(Texto," Da ", " da ")

Texto = Replace(Texto," Das ", " das ")

Texto = Replace(Texto," De ", " de ")

Texto = Replace(Texto," Do ", " do ")

Texto = Replace(Texto," Dos ", " dos ")

END

RESULT(Texto)


-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller

PROCEDURE Clip(LOCAL Texto)

Texto = NoSpace(Texto)

RESULT(Texto)

-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------
//Desenvolvido por: Adriano Boller
//18/09/2014
//adrianoboller@gmail.com skype adrianoboller
//br.linkedin.com/in/adrianoboller

PROCEDURE WS_CEP_EnderecoDasCoordenadas(LOCAL pLatitude, LOCAL pLogitude, LOCAL ODT, LOCAL DebugSN)

IF GloDebugSN = "S" THEN
Info("WS_CEP_EnderecoDasCoordenadas")
DebugSN = "S"
END

NextTitle("Atenção")

ok is boolean = False

GloEnderecoOK = False

Endereco, RuaLatitude, RuaLongitude is string = ""

IF pLatitude <> 0 AND pLogitude <> 0 AND pLatitude <> Null AND pLogitude <> Null

ExcedeuConsultas01 is string = "ZERO_RESULTS"

ExcedeuConsultas02 is string = "OVER_QUERY_LIMIT"

//Url is string = "http://maps.googleapis.com/maps/api/geocode/json…=" + pLatitude + "," + pLogitude + "&sensor=true"

Url is string = "http://maps.googleapis.com/maps/api/geocode/json…=" + pLatitude + "," + pLogitude + "&sensor=false"

IF DebugSN = "S"
Info("01",Url)
END

HTTPTimeOut(GloHTTPTimeOut)

//loop (3)
ok = HTTPRequest(Url)
IF ok = True THEN
//BREAK
END
//END

ChangeCharset(charsetOccidental) // SEM ACENTO

RetJson is string = HTTPGetResult(httpResult)

IF DebugSN = "S"
Info(Url, pLatitude, pLogitude, RetJson)
END

// fSaveText("c:\json.txt",RetJson) 
// Erro01 = PositionOccurrence(RetJson,ExcedeuConsultas01,firstRank,IgnoreCase) 
// Erro02 = PositionOccurrence(RetJson,ExcedeuConsultas02,firstRank,IgnoreCase) 
// Erro03 = PositionOccurrence(RetJson,ExcedeuConsultas03,firstRank,IgnoreCase)

IF PositionOccurrence(RetJson,ExcedeuConsultas01,firstRank,IgnoreCase) > 0 OR...
PositionOccurrence(RetJson,ExcedeuConsultas02,firstRank,IgnoreCase) > 0 OR...
PositionOccurrence(Upper(RetJson),"ZERO",firstRank,IgnoreCase) > 0 OR...
PositionOccurrence(Upper(RetJson),"OVER",firstRank,IgnoreCase) > 0 

RetJson = "ERRO" 
GloEnderecoOK = False

ELSE IF RetJson <> "ERRO" 

GloEnderecoOK = True

TagEnd is string = """formatted_address"" :"

i is int = PositionOccurrence(RetJson, TagEnd, firstRank, IgnoreCase ) + Length(TagEnd)

//Pega endereço (entre duas aspas)

Endereco = ExtractString(RetJson[[i TO]],2,"""")

Endereco = WS_RemoveAcentos(Endereco)




TagLat is string = """lat"" :"

i = PositionOccurrence(RetJson, TagLat, firstRank, IgnoreCase ) + Length(TagLat)

RuaLatitude = ExtractString(RetJson[[i TO]],2,"""")




Taglng is string = """lng"" :"

i = PositionOccurrence(RetJson, Taglng, firstRank, IgnoreCase ) + Length(Taglng)

RuaLongitude = ExtractString(RetJson[[i TO]],2,"""")


//info("Json",Endereco, RuaLatitude + "," + RuaLongitude , pLatitude + "," + pLogitude )

END


IF Endereco = "" OR RetJson = "ERRO" THEN

//Url = "http://maps.googleapis.com/maps/api/geocode/xml…=" + pLatitude + "," + pLogitude + "&sensor=true"
Url = "http://maps.googleapis.com/maps/api/geocode/xml…=" + pLatitude + "," + pLogitude + "&sensor=false"

IF DebugSN = "S"
Info("02",Url)
END 

HTTPTimeOut(GloHTTPTimeOut)

//LOOP (3)
ok = HTTPRequest(Url)
IF ok = True THEN
//BREAK
END
//END

RetXml is string = HTTPGetResult(httpResult)

IF DebugSN = "S"
Info("Xml:",RetXml)
END 

//<formatted_address>Rua Professora Antonia Reginato Vianna, 442 - Capão da Imbuia, Cajuru, Curitiba - PR, 82810-300, Brasil</formatted_address>

IF PositionOccurrence(RetXml,"<formatted_address>",firstRank) > 0 THEN

GloEnderecoOK = True

//Endereço
nPosicaoInicial is int = PositionOccurrence(RetXml,"<formatted_address>",firstRank) + Length("<formatted_address>")
nPosicaoFinal is int = PositionOccurrence(RetXml,"</formatted_address>",firstRank) + Length("</formatted_address>")
nPosicaoFinal = nPosicaoFinal - nPosicaoInicial
Endereco = Middle(RetXml,nPosicaoInicial,nPosicaoFinal)

// //Latitude da Rua
// nPosicaoInicial2 is int = PositionOccurrence(RetXml,"<lat>",firstRank) + Length("<lat>")
// nPosicaoFinal2 is int = PositionOccurrence(RetXml,"</lat>",firstRank) + Length("</lat>")
// nPosicaoFinal = nPosicaoFinal2 - nPosicaoInicial2
// RuaLatitude = Middle(RetXml,nPosicaoInicial2,nPosicaoFinal2)
//
// //Latitude da Rua
// nPosicaoInicial3 is int = PositionOccurrence(RetXml,"<lng>",firstRank) + Length("<lng>")
// nPosicaoFinal3 is int = PositionOccurrence(RetXml,"</lng>",firstRank) + Length("</lng>")
// nPosicaoFinal = nPosicaoFinal3 - nPosicaoInicial3
// RuaLongitude = Middle(RetXml,nPosicaoInicial3,nPosicaoFinal3)
//
// Info("Xml",Endereco, RuaLatitude + "," + RuaLongitude , pLatitude + "," + pLogitude )

ELSE
GloEnderecoOK = False
RetJson = "ERRO" 
END

END

IF Upper(Endereco) = "ERRO" AND ODT = "O" THEN
GloEnderecoOK = False
RetJson = "ERRO" 
END 


END

IF RetJson <> "ERRO" 
IF ODT = "O"
GloVoceEnderecoLongo = Endereco
GloVoceEndereco = Endereco
// GloVocelatitude = RuaLatitude
// GloVoceLongitude = RuaLongitude
ELSE IF ODT = "D"
GloDestinoEnderecoLongo = Endereco
GloDestinoEndereco = Endereco
// GloDestinoLatitude = RuaLatitude
// GloDestinoLongitude = RuaLongitude
ELSE IF ODT = "T"
GloTaxiEnderecoLongo = Endereco
GloTaxiEndereco = Endereco
// GloDestinoLatitude = RuaLatitude
// GloDestinoLongitude = RuaLongitude
END
END

IF DebugSN = "S"
Info("03",Endereco)
END

IF RetJson = "ERRO" THEN
Popup(GloMsgSemInternet,"L")
END

//Endereço inválido
//Exemplo: Curitiba - Parana --- ( - )
IF QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1
Endereco = ""
GloVoceEnderecoLongo = "ERRO"
GloVoceEndereco = "ERRO"
GloVoceNumero = 0
//Info("Endereço inválido",GloVoceEnderecoLongo)
END
IF QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1
Endereco = "" 
GloDestinoEnderecoLongo = "ERRO"
GloDestinoEndereco = "ERRO"
GloDestinoNumero = 0 
//Info("Endereço inválido",GloDestinoEnderecoLongo)
END

RESULT (Endereco)

Mapa Obtém longitude e latitude

Mapa Obtém longitude e latitude


/ Obtém longitude e latitude do endereço
Localization = GglAddressToCoordinates(EDT_Endereco + " " + EDT_numero + " " + EDT_Cidade)
rLatitude = Localization..Latitude
rLongitude = Localization..Longitude
[09:19:05] Julio Cesar Pedroso: solamente hesto
[09:19:29] Julio Cesar Pedroso: te voy a passar um exemplo completo
[09:19:40] Julio Cesar Pedroso: gglParameters is gglMapParameter
//gglMarker is a gglMarker
rLatitude, rLongitude are reals
Localization is gglCoordinate
stipomapa is string = GetTipoMapa()
M1 is gglMarker

// Obtém longitude e latitude do endereço
Localization = GglAddressToCoordinates(EDT_Endereco + " " + EDT_numero + " " + EDT_Cidade)
rLatitude = Localization..Latitude
rLongitude = Localization..Longitude
IF EDT_Latitude = 0
 EDT_Latitude = rLatitude
END
IF EDT_Longitude = 0
 EDT_Longitude = rLongitude
END
STC_Latitude_Longitude = "Latitude: " + EDT_Latitude + " Longitude: " + EDT_Longitude
// Cria um marcador para o endereço
M1..Latitude = EDT_Latitude 
M1..Longitude = EDT_Longitude
M1..Color= 0x0000FF
M1..Size = gglSmall
Add(gglParameters.Marker,M1)
//gglparameters.format = gglJPG
//gglParameters.Language = "fr"
// Mostra o endereço em um controle de Imagem
IMG_MAPA = GglGetStaticMap(rLatitude, rLongitude, Zoom, IMG_MAPA..Width, IMG_MAPA..Height, stipomapa, gglParameters)
IMG_MAPA..Visible = True
IF ErrorOccurred THEN
 Error()
END



Set Procedure Combox Cliente

VIDEO - COMBOX CLIENTE - SET PROCEDURE - ARRAY MATRIZ


Array - http://doc.windev.com



--------------------------------------------------------------------------------------------------------------------------
Senti a necessidade de fazer uma procedure de combox cliente, entao estou compartilhando essa
informação de como eu fiz.
--------------------------------------------------------------------------------------------------------------------------









--------------------------------------------------------------------------------------------------------------------------
 _lista_dados is array of 1 by 2 string
_lista_dados=matos_combox_cliente(1)
FOR i=1 TO _lista_dados..Occurrence/2
    ListAdd(COMBO_id_empresa_cliente,_lista_dados[i,1]+gLink(_lista_dados[i,2]))          
END


--------------------------------------------------------------------------------------------------------------------------
 PROCEDURE matos_combox_cliente(_numero_empresa is int)
_data_source is Data Source
_sql is string
_lista_dados is array of 1 by 2 string // Aqui sera armazenado Nome, e Codigo Cliente
_sql = [
    select
     cliente.id_empresa_cliente as cli_id_empresa_cliente,
     cliente.id_cliente,nome_fantasia as cli_nome_fantasia
    from    cliente where id_empresa=%1
]
_sql = StringBuild(_sql,_numero_empresa)
IF HExecuteSQLQuery(_data_source,hQueryDefault,_sql) THEN
    HReadFirst(_data_source)
    WHILE NOT HOut()
        ArrayAddLine(_lista_dados,_data_source.cli_nome_fantasia,_data_source.cli_id_empresa_cliente)
        HReadNext(_data_source)
    END
    HFreeQuery(_data_source)    
END
RESULT _lista_dados


--------------------------------------------------------------------------------------------------------------------------

Windev - Matos Funcao - Inscricao Estadual

VIDEO - FUNCAO - INSCRICAO ESTADUAL


http://www.sintegra.gov.br/














--------------------------------------------------------------------------------------------------------------------
 _retorno is int
_observacao is string
(_retorno,_observacao) = matos_f_inscricao_estadual_validar(EDT_inscricao,EDT_uf)
IF _retorno=0 THEN // Valido
    STC_resultado=_observacao
ELSE
    STC_resultado=_observacao
END


--------------------------------------------------------------------------------------------------------------------
 PROCEDURE matos_f_inscricao_estadual_validar(s_inscricao_estadual is string,s_uf is string)
_retorno_inscricao is string
_retorno is string
_retorno_inscricao =  CallDLL32("DllInscE32", "ConsisteInscricaoEstadual", s_inscricao_estadual , s_uf)
_retorno=ErrorInfo()

IF _retorno = ""     THEN  
    IF _retorno_inscricao = 0 THEN      
        RESULT (0,"Inscrição Estadual válida")
    ELSE IF  _retorno_inscricao = 1 THEN        
        RESULT (1,"Inscrição Estadual Inválida")
    ELSE IF  _retorno_inscricao = 2 THEN        
        RESULT (2,"Faltam parâmetros")
    END  
ELSE   
    RESULT (3,"Erro durante chamada do DllInscE32 - " + _retorno)
END


--------------------------------------------------------------------------------------------------------------------


Timer

Timer


http://help.windev.com/en-US/?3015008&name=Timer

Adriano - http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/683-example-timer-window-715/read.awp?hl=timer_loop


http://windevdesenvolvimento.blogspot.com.br/2014/12/timer_15.html

TimerSys - http://windevdesenvolvimento.blogspot.com.br/2014/12/timer.html












Teste

Teste
teste