Comparar String com Char
Aqui na empresa estamos com um pequeno desafio.
Temos uma string de tamanho 1. E precisamos verificar se nela existe ´A´ ou ´R´.
Um amigo mostrou uma solução:
Achei interessante. Funciona, mas existe outra(s) maneira(s) de se verificar isso!? o delphi entende [b:d1cf22b16d]´A´[/b:d1cf22b16d] como um Char e não uma string.
Temos uma string de tamanho 1. E precisamos verificar se nela existe ´A´ ou ´R´.
Um amigo mostrou uma solução:
Pos(String, ´A, R´) > 0
Achei interessante. Funciona, mas existe outra(s) maneira(s) de se verificar isso!? o delphi entende [b:d1cf22b16d]´A´[/b:d1cf22b16d] como um Char e não uma string.
.lg.
Curtidas 0
Respostas
Osocram
03/07/2009
se é uma string de tamanho 1 então ou ela é A ou R ou qualquer outro, certo?
pq vc não pode comparar assim?
pq vc não pode comparar assim?
if string=´A´ or string=´R´ then
Aqui na empresa estamos com um pequeno desafio.
Temos uma string de tamanho 1. E precisamos verificar se nela existe ´A´ ou ´R´.
Um amigo mostrou uma solução:
Achei interessante. Funciona, mas existe outra(s) maneira(s) de se verificar isso!? o delphi entende [b:5c94cfdc90]´A´[/b:5c94cfdc90] como um Char e não uma string.
Pos(String, ´A, R´) > 0
GOSTEI 0
.lg.
03/07/2009
este é um que o pessoal aqui não quer fazer (rsrs). Ao todo são 14 letras que procuramos. Ficaria enorme :o
Há outra maneira além das 2 que temos até agora!?
.LG.
Há outra maneira além das 2 que temos até agora!?
.LG.
GOSTEI 0
Osocram
03/07/2009
ahhh Entendi.. achei que fosse apenas aquelas duas letras...
tenta assim
Veja que nesse caso tive q passra letra[1], e vc disse que é string de 1, mas se essa string estiver vazia vai dar erro então tem q fazer uma proteção antes.
flw.
tenta assim
procedure TForm1.btnClick(Sender: TObject); var Alfabeto : set of ´A´..´Z´; letra :string; begin Alfabeto := [´A´,´R´,´Z´]; letra := ´B´; if letra[1] In Alfabeto then ShowMessage(Letra+´ está no alfabeto´) else ShowMessage(Letra+´ não está no alfabeto´); end;
Veja que nesse caso tive q passra letra[1], e vc disse que é string de 1, mas se essa string estiver vazia vai dar erro então tem q fazer uma proteção antes.
flw.
este é um que o pessoal aqui não quer fazer (rsrs). Ao todo são 14 letras que procuramos. Ficaria enorme :o
Há outra maneira além das 2 que temos até agora!?
.LG.
GOSTEI 0
.lg.
03/07/2009
3 maneiras distintas de se resolver, vou ver se com essa maneira tambem os ´cabeça-dura´ daqui do serviço querem aplicar. rsrs. :o
Se houver mais soluções, serão todas bem vindas.
Mais uma vez, muito obrigado!!!
.LG.
Se houver mais soluções, serão todas bem vindas.
Mais uma vez, muito obrigado!!!
.LG.
GOSTEI 0
Carlosrm
03/07/2009
.lg.;
Acho que estamos trocando seis por meia-dúzia, mas em todos casos veja isso:
Poderia ser uma função que verificasse a pertinência:
Eu testei assim, no Delphi 7:
carlosrm
Acho que estamos trocando seis por meia-dúzia, mas em todos casos veja isso:
Poderia ser uma função que verificasse a pertinência:
function ta_la_char(chartring : string): boolean; begin result := pos(chartring, ´ABCDEFGHIJKXYZ´) > 0; end;
Eu testei assim, no Delphi 7:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if (ta_la_char(uppercase(key))) then showmessage(´Tá lá a letra ´+uppercase(key)+´ !´); end;)
carlosrm
GOSTEI 0