Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Salles

Função para copia de substring

Recommended Posts

Boa noite a todos, eu preciso de uma ajudinha de vocês num código que não sei como construir. Minha situação é a seguinte, tenho um memo carregado com uma resposta de um site (tudo, inclusive o colchete, faz parte da resposta):


 {"id":12345,"codconta":12345,"nomeconta":fulano,"nivelconta":10}


Eu preciso de uma rotina que, dependendo da situação, eu informe que preciso de "id" e ela me retorne "12345", ou qualquer outra palavra-chave com seu respectivo retorno.
Eu vi na internet, em vários fóruns, inclusive neste, que o povo utilizou uma função pos() aliado com copy. Mas não encontrei ninguém ensinando como funciona essa bendita função. Vocês podem me ajudar nisso?

 

Obs: as informações respectivas de "id","codconta","nomeconta" podem variar, então pensei em algo que:  (A) localizasse que tipo de informação eu quero, (B) copiasse a informação de ":" até ",".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite novamente, depois de um tempo tentando creio que consegui fazer a função, porém estou com um problema no meu fonte que não consigo fazer debug neste trecho para realizar testes. Em todo caso, vou deixar o codigo para que deem uma olhada, não sou bom programador, mas eu vou tentando rsrs

 

function TForm1.RetornaSubstring(Frase, TipoRetorno : String): String;
var
	Texto, StringRetorno : string;
	contador, i : integer;
begin
	Texto := '';
  StringRetorno := '';
  contador:=2;
//FOR PARA ENCONTRAR "TipoRetorno";

	for i:=contador to length(Frase) do
	begin
		while (frase[i] <> '"') or (frase[i] <> ',') or (frase[i] <> ':') do
			StringRetorno := StringRetorno+Frase[i];
			if StringRetorno = TipoRetorno then
        begin
          contador:=i+2;
				  break
        end
			else
				StringRetorno := '';
	end;

//FOR PARA COPIAR O RETORNO DO "TipoRetorno";

	for i:=contador to length(frase) do
	begin
		while (frase[i] <> ',') or (frase[i] <> '}') do
			texto:=texto+frase[i];
		Result := texto;
	end;
end;

O que eu fiz foi até simples, como eu sei onde eu chego na informação, e quase onde ela está, criei esta rotina que vai fazer uma varredura caractere por caractere e vai armazenando eles numa variável do tipo string, cada vez que a varredura chega no final da palavra-chave, ele deve testar se a palavra-chave que eu procuro é igual a que a varredura encontrou. Se não for, a variavel string é resetada e a varredura segue adiante até encontrar a palavra-chave. Se encontrar, é feita uma segunda varredura (similar a primeira) atras o resultado do retorno do site, que no caso vai estar sempre precedido por (:) e sucedido por uma (,). Encontrado o resultado, a função retorna a variável string com o valor que procuro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Pessoal, preciso pegar um trecho dessa string:
       
      https://meudominio.com.br/app/rotaA/rotaB/xxx.jpg Dessa URL, preciso retirar
       
      /app/rotaA/rotaB/xxx.jpg  
      Como faço?
       
      Valew
    • Por Hudson Henrique Bosso
      Bom dia pessoal,
       
      Estou com o seguinte problema:
       
      Foi feita a importação de alguns valores em uma tabela, porém o tratamento para considerar a vírgula. Então onde deveria ter ficado "1,700", o campo foi preenchido com "1700".
       
      Existe alguma forma de aplicar um UPDATE nesses campos e inserir a vírgula? Para facilitar, em todos os casos ela deveria ter ficado 3 casas antes do LENGTH total do campo. Tenho um conhecimento básico de SQL, então não sei como conseguiria montá-la. A tabela é a SAM_PRECOGENERICO_DOTAC, enquanto o campo QTDUSCUSTOOPERACIONAL.
    • Por ederpardeiro
      Boa tarde!
      Não manjo muito de MySQL, conheço um pouco mais de SQLServer e estou tendo uma dificuldade para resolver uma questão.
      Tenho uma tabela com uma coluna de nomes onde preciso que a consulta retorna somente o primeiro e o último nome.
      Por exemplo: José Joaquim da Silva Xavier
      Resultado: José Xavier
      Em SQLServer eu faria assim:
      select substring(NomeCompleto,1,CHARINDEX(' ',NomeCompleto)) + Reverse(substring(REVERSE(NomeCompleto),1,CHARINDEX(' ',REVERSE(NomeCompleto)))) from Pessoas  
    • Por halfar
      este comando está funcionando somente no IE... Não tem como faze-lo funcionar também no chrome??
    • Por Gilberto Jr
      Pessoal, boa tarde;
       
      Seguinte, eu fiz um programa, e nesse programa eu tenho que imprimir etiqueta.
       
      A impressora de etiqueta esta na LPT1 ou na USB002.
       
      Mas o comando que eu estou usando que é esse abaixo não esta dando certo.
       
      <?php $teste = shell_exec('COPY ZEBRACP25.txt > \\gilberto-pc\Zebra Texto (USB002)'); echo var_dump($teste); ?> Alguém poderia me da uma ajuda?
       
      Att;
      Gilberto Jr
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.