Fórum Delphi - Function Procurar palavra entre posições #616818
30/09/2021
0
Tenho vários códigos que segue um determinado padrão de códigos separados por - (traço) , onde sua estrutura é :
primeiro traço código vendedor
segundo traço código cidade
terceiro traço código cliente
quarto traço código produto
exemplo:
1980-147-15775000-12
45-1-14785-14589
1-99-189-1658
Vejam , que embora segue um padrao obedecendo os traços, mas não segue um padrao na quantidade de caracteres entre traços.
o que eu preciso é de uma função que pegue todos valores entre o segundo e terceiro traço encontrato na string
o que estou buscando seria + ou - assim
string = '1980-147-15775000-12'
function cliente(string,CaracterProcurado,PosicaoInicio,PosicaoFim)
resultado da function >>> 15775000
string = 1-99-189-1658
function cliente(string,CaracterProcurado,PosicaoInicio,PosicaoFim)
resultado da function >>> 189
ou seja , ele me retornaria o que esta entre a Segunda posição que encontrou "-" e a terceira posição que encontrou "-"
Agradeço antecipadamente se puderem me ajuda.
Mauricio Gabriel
Curtir tópico
+ 0Post mais votado
30/09/2021
https://pt.stackoverflow.com/questions/28223/copiar-parte-de-uma-string
Gxf
Gostei + 1
Mais Posts
30/09/2021
Mauricio Gabriel
https://pt.stackoverflow.com/questions/28223/copiar-parte-de-uma-string
Muito obrigado pela ajuda prestada, mas essa solução encontra apenas o primeiro caracter encontrado dentro de uma string, o que estou buscando é algo entre as posições 2 e 3 encontrado ...
Muito obrigado pela ajuda , mas a função Pos( só encontra o primeiro item. precisaria do segundo ao terceiro item encontrado.
Gostei + 0
30/09/2021
Emerson Nascimento
var
slCodigos: TStringList;
strTeste: string;
begin
strTeste := '1980-147-15775000-12';
slCodigos := TStringList.Create;
slCodigos.Delimiter := '-'; // usado para separar a string
slCodigos.StrictDelimiter := True; // somente o caractere indicado será usando para separar a string
slCodigos.DelimitedText := strTeste; // string que será 'dividida'
MessageBox(
'Vendedor: ' + slCodigos[0]+#13#10+
'Cidade: ' + slCodigos[1]+#13#10+
'Cliente: ' + slCodigos[2]+#13#10+
'Produto: ' + slCodigos[3],
'Resultado',
mb_ok
);
end;pode ter algum erro de sintaxe. estou sem Delphi no momento.
Gostei + 1
30/09/2021
Natanael Ferreira
function Cliente(valores: string): string;
var
lista: TStringList;
begin
Result := EmptyStr;
lista := TStringList.Create;
try
lista.StrictDelimiter := True;
lista.Delimiter := '-';
lista.DelimitedText := valores;
if lista.Count >= 3 then
Result := lista[2];
finally
lista.Free;
end;
end;Exemplo de uso:
ShowMessage(Cliente('1980-147-15775000-12')); // retorna 15775000Gostei + 1
30/09/2021
Mauricio Gabriel
var
slCodigos: TStringList;
strTeste: string;
begin
strTeste := '1980-147-15775000-12';
slCodigos := TStringList.Create;
slCodigos.Delimiter := '-'; // usado para separar a string
slCodigos.StrictDelimiter := True; // somente o caractere indicado será usando para separar a string
slCodigos.DelimitedText := strTeste; // string que será 'dividida'
MessageBox(
'Vendedor: ' + slCodigos[0]+#13#10+
'Cidade: ' + slCodigos[1]+#13#10+
'Cliente: ' + slCodigos[2]+#13#10+
'Produto: ' + slCodigos[3],
'Resultado',
mb_ok
);
end;pode ter algum erro de sintaxe. estou sem Delphi no momento.
Boa tarde !!! Emerson Nascimento
Excelente Atendeu o que estava procurando ... e aprendi mais com isso . Muito obrigado por sua ajuda.
Gostei + 0
30/09/2021
Mauricio Gabriel
function Cliente(valores: string): string;
var
lista: TStringList;
begin
Result := EmptyStr;
lista := TStringList.Create;
try
lista.StrictDelimiter := True;
lista.Delimiter := '-';
lista.DelimitedText := valores;
if lista.Count >= 3 then
Result := lista[2];
finally
lista.Free;
end;
end;Exemplo de uso:
ShowMessage(Cliente('1980-147-15775000-12')); // retorna 15775000Boa tarde Natanael Ferreira , Antecipo Agradecimento com sua contribuição , Atendeu em cheio o que eu estava buscando , Graças a vocês aprendi aqui 02 formas de fazer diferentes que trazem o mesmo resultado ... Agradeço grandemente por ter compartilhar seu conhecimento comigo.
Espero poder ajudar outros como vocês fizerem comigo em um futuro próximo ... Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)