Dúvida com string

27/06/2008

1

Preciso copiar uma string de uma posição conhecida até a palavra FONE, ou seja, copiar tudo que esteja antes de fone. Como faço isso usando pos? Tentei assim Copy(s,1,pos(´FONE:´,s), mas não deu. Não determinar quantos caracters são até fone, pois são variáveis.


Responder

Posts

27/06/2008

Ffc

Boa noite Paulo,

Tenta desta forma que vai funcionar.

Copy([b:11f7f70823]var_string[/b:11f7f70823], 1, POS(´FONE:´, [b:11f7f70823]var_string[/b:11f7f70823])-1));

Abraços.


Responder

30/06/2008

Paulo

Já fiz e não funciona. Veja o meu código:
j := AnsiPos(´LOJA:´,s); if j <> 0 then Loja := Copy(s,j+5,pos(´FONE:´,s)-1);

A String s está assim:
´LOJA: São Bento FONE:(11)9999-9999´
Pelo meu código acima está vindo assim:
´São Bento Fone:(11)9´


Realmente estou apanhando de algo muito simples


Responder

30/06/2008

Paulo

Já fiz e não funciona. Veja o meu código:
j := AnsiPos(´LOJA:´,s); if j <> 0 then Loja := Copy(s,j+5,pos(´FONE:´,s)-1);

A String s está assim:
´LOJA: São Bento FONE:(11)9999-9999´
Pelo meu código acima está vindo assim:
´São Bento Fone:(11)9´


Realmente estou apanhando de algo muito simples


Responder

30/06/2008

Marco Salles

Preciso copiar uma string de uma posição conhecida até a palavra FONE, ou seja, copiar tudo que esteja antes de fone.


se voce quer isto mesmo e eu entendi deste memsmo modo o [u:3cea956517][b:3cea956517]Facc tem razão[/b:3cea956517][/u:3cea956517]:

Boa noite Paulo, Tenta desta forma que vai funcionar. Copy(var_string, 1, POS(´FONE:´, var_string)-1)); Abraços.


Agora é casesensitive e se voce tiver Fone , FONe , FoNe etc... não funciona .. Ai ja é outro código

Fora disso , realmente não dá para entender tamnha dúvida ????


Responder

30/06/2008

Paulo

Está exatamente como está na minha string, ou seja, [color=red:54cfecf611]FONE:[/color:54cfecf611]


Responder

30/06/2008

Marco Salles

citação de marco salles
Agora é casesensitive e se voce tiver Fone , FONe , FoNe etc... não funciona .. Ai ja é outro código


citação de paulo
Está exatamente como está na minha string, ou seja, FONE:


então paulo .. o codifo do FFC para uma String
[b:9c4850d5d9]s=´LOJA: São Bento FONE:(11)9999-9999´[/b:9c4850d5d9]
Tera como Resposta
[b:9c4850d5d9]´LOJA: São Bento´[/b:9c4850d5d9]

Esta Errado Isto ????


Responder

30/06/2008

Paulo

Marcos, a minha string original é:
´LOJA: São Bento FONE:(11)9999-9999´
Eu preciso pegar somente São Bento, nada mais. Eu coloquei o j+5, para copiar apartir LOJA:(5 caracteres), e pegar tudo antes de FONE: e depos de LOJA:. Fiz conforme passei, mas continua vindo ´sujeira´.


Responder

30/06/2008

Ffc

Paulo tenta desta forma

Edit1.Text := ´LOJA: São Bento FONE:(11)9999-9999´;
(Copy(Edit1.Text, 7, POS(´FONE:´, Edit1.Text)-7);

Vai dar certo ok.

Abraços.


Responder

30/06/2008

Paulo

Não tenho como colocar num edit. Minha realidade é a seguinte: Imagine um arquivo texto com mais ou menos 10.000 linhas, onde vai aparecer sempre, em determinados momentos String assim:
[color=red:2dfcdf81ec]LOJA: Nome _da_loja FONE:Num_Fone[/color:2dfcdf81ec]. Aí eu pego somente a loja, guardo numa StringList e depois gero outro arquivo Txt, mas já formatado conforme o nosso Layout aqui. Falei 10.000 linhas, mas pode ser muito mais, dependendo do período. Vou varrendo e guardando o nome da loja. Por isso eu uso o AnsiPos e etc...


Responder

30/06/2008

Joaoshi

Colega, tente assim:

j := AnsiPos(´LOJA:´,s); 
if j <> 0 then 
     Loja := Copy(s,
                         Pos(´LOJA:´,s) + 5,
                         Pos(´FONE:´,s)-7);


Espero ter ajudado.


Responder

30/06/2008

Paulo

Ainda não testei, mas posso tentar fazer assim e ver se funciona.

j := AnsiPos(´LOJA:´,s);
FinLoja := j+5;
if j <> 0 then
Loja := Copy(s,FinLoja,pos(´FONE:´,s)-FinLoja);


Responder

30/06/2008

Ffc

Caro Paulo após testar eu percebi qual o seu problema, então teste desta forma.

var
J: Integer;
S, Loja: [b:58f96c5cb6]String[/b:58f96c5cb6];
[b:58f96c5cb6]begin[/b:58f96c5cb6]

S := ´TESTANDO O SISTEMA LOJA: SAO BENTO FONE:(62)33110000´;
j := AnsiPos(´LOJA:´,s);
[b:58f96c5cb6]if[/b:58f96c5cb6] j <> 0 [b:58f96c5cb6]then[/b:58f96c5cb6]
Loja := Copy(s,Pos(´LOJA:´,s) + 5,Pos(´FONE:´,s)- (Pos(´LOJA:´,s) + 5));
ShowMessage(Loja);

Obs: S: String foi somente para teste então pode fazer da sua forma.

Boa sorte...


Responder