Gavoha Postado Janeiro 26, 2017 Denunciar Share Postado Janeiro 26, 2017 Senhores, tenho a seguinte string que recebo dentro de um TMemo {"altitude":533.2,"bairro":null,"cep":"17290000","latitude":"-22.504198","longitude":"-48.71221","logradouro":"Macatuba","cidade":"Macatuba","ddd":14,"ibge":"3528007","estado":"SP"} Preciso separar essa string em variáveissAltitude sBairro, sCEP, sLatitude, sLongitude, sLogradouro, sCidade, sDDD, sIBGE, sEstado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 26, 2017 Denunciar Share Postado Janeiro 26, 2017 altitude":533.2,"bairro":null,"cep":"17290000","latitude voce tem como delimitadores o ( : ) dois pontos e a ( , ) virgula use o comando POS do delphi ( veja no help F1 ) para procurar o ( : ) e limite a contagem na virgula jogue o valor da linha do Memo em uma string extraia os caracteres da string ( use o comando COPY ) nesse intervalo e atribua o valor para as variaveis ( sAltitude , sBairro, sCEP, sLatitude, etc..) depois, delete a string ( use o comando DELETE ) nesse intervalo e repita a operação até o final abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gavoha Postado Janeiro 26, 2017 Autor Denunciar Share Postado Janeiro 26, 2017 Confesso está acima do meu conhecimento... mas é assim que agente aprende. vou tentar fazer Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gavoha Postado Janeiro 26, 2017 Autor Denunciar Share Postado Janeiro 26, 2017 Com base na minha pouca experiência eu fiz algo que resolveu: mResultado.Text := StringReplace(mResultado.Text , '"','',[rfReplaceAll, rfIgnoreCase]); mResultado.Text := StringReplace(mResultado.Text , '{','',[rfReplaceAll, rfIgnoreCase]); mResultado.Text := StringReplace(mResultado.Text , '}','',[rfReplaceAll, rfIgnoreCase]); mResultado.Text := StringReplace(mResultado.Text , ':',',',[rfReplaceAll, rfIgnoreCase]); listCordenadas.Items.Clear; listCordenadas.Items.Delimiter := ','; listCordenadas.items.DelimitedText := mResultado.Text; edAltitude.Text := listCordenadas.items[1]; edBairro.Text := listCordenadas.Items[3]; edCEP.Text := listCordenadas.Items[5]; edLatitude.Text := listCordenadas.Items[7]; edLongitude.Text := listCordenadas.Items[9]; 1-Removi os Caracteres Aspas, Chave Aberta, Chave Fechada e Dois pontos 2- Coloquei a Virgula como Delimitador 3- Preenchi os Edits com as Linhas do ListBox Havia maneira mais simples ou mais segura? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 26, 2017 Denunciar Share Postado Janeiro 26, 2017 ok... o que voce fez, foi apenas outra forma de obter o mesmo resultado voce poderia ter feito assim tambem procedure TForm1.Button1Click(Sender: TObject); var S: string; begin S := ' altitude":533.2,"bairro":null,"cep":"17290000","latitude; sAltitude := copy(s,Pos(':', S)+1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sBairro := copy(s,Pos(':', S)+1,Pos(',', S)-1); delete(s,1,Pos(',', S)); // repetir para as demais variaveis end; OBS: a string S receberia a linha do Memo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gavoha Postado Janeiro 26, 2017 Autor Denunciar Share Postado Janeiro 26, 2017 Jhonas, tive alguns problemas com essa forma que você postou: Com o Texto: {"altitude":760.0,"bairro":"Ipiranga","cep":"04209000","latitude":"-23.2971699728","longitude":"-46.3623848631","logradouro":"Rua do Manifesto, até 1089/1090","cidade":"São Paulo","ddd":11,"ibge":"3550308","estado":"SP"} sAltitude ficou 760.0,"bairro":"I sBairro ficou "Ipiranga","cep":"0 sCEP ficou "04209000","lati sLatitude ficou "-23.2971699728","longitude sLongitude ficou "-46.3623848631","logradouro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 26, 2017 Denunciar Share Postado Janeiro 26, 2017 era só fazer os ajustes procedure TForm1.Button1Click(Sender: TObject); var s : string; sAltitude, sBairro, sCEP, sLatitude, sLongitude, sLogradouro, sCidade, sDDD, sIBGE, sEstado : string ; begin s := '{"altitude":533.2,"bairro":null,"cep":"17290000","latitude":"-22.504198","longitude":"-48.71221","logradouro":"Macatuba","cidade":"Macatuba","ddd":14,"ibge":"3528007","estado":"SP"}'; delete(s,1,Pos(':', S)-1); sAltitude := copy(s,Pos(':', S)+1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sBairro := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sCEP := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sLatitude := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sLongitude := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sLogradouro := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sCidade := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sDDD := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); sIBGE := copy(s,1,Pos(',', S)-1); delete(s,1,Pos(',', S)); delete(s,1,Pos(':', S)); sEstado := copy(s,2,2); showmessage(sEstado); end; OBS: esse código ainda poderia ser mais curto ...é só observar e ver o que poderia ser melhorado abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gavoha Postado Janeiro 28, 2017 Autor Denunciar Share Postado Janeiro 28, 2017 Jhonas, muito obrigado pela paciência. Aprendi mais um pouco! Abraço! [CONCLUÍDO] Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gavoha
Senhores, tenho a seguinte string que recebo dentro de um TMemo
{"altitude":533.2,"bairro":null,"cep":"17290000","latitude":"-22.504198","longitude":"-48.71221","logradouro":"Macatuba","cidade":"Macatuba","ddd":14,"ibge":"3528007","estado":"SP"}
Preciso separar essa string em variáveis
sAltitude
sBairro,
sCEP,
sLatitude,
sLongitude,
sLogradouro,
sCidade,
sDDD,
sIBGE,
sEstado
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.